Changeset 30521 in vbox
- Timestamp:
- Jun 30, 2010 8:24:32 AM (15 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/EventImpl.cpp
r30477 r30521 207 207 208 208 return S_OK; 209 } 210 211 typedef std::list<Bstr> VetoList; 212 struct VBoxVetoEvent::Data 213 { 214 Data() 215 : 216 mVetoed(FALSE) 217 {} 218 BOOL mVetoed; 219 VetoList mVetoList; 220 }; 221 222 HRESULT VBoxVetoEvent::FinalConstruct() 223 { 224 VBoxEvent::FinalConstruct(); 225 m = new Data; 226 return S_OK; 227 } 228 229 void VBoxVetoEvent::FinalRelease() 230 { 231 if (m) 232 { 233 uninit(); 234 delete m; 235 m = 0; 236 } 237 VBoxEvent::FinalRelease(); 238 } 239 240 241 HRESULT VBoxVetoEvent::init(IEventSource *aSource, VBoxEventType_T aType) 242 { 243 HRESULT rc = S_OK; 244 // all veto events are waitable 245 rc = VBoxEvent::init(aSource, aType, TRUE); 246 if (FAILED(rc)) return rc; 247 248 m->mVetoed = FALSE; 249 m->mVetoList.clear(); 250 251 return rc; 252 } 253 254 void VBoxVetoEvent::uninit() 255 { 256 VBoxEvent::uninit(); 257 if (!m) 258 return; 259 m->mVetoed = FALSE; 260 } 261 262 STDMETHODIMP VBoxVetoEvent::AddVeto(IN_BSTR aVeto) 263 { 264 AutoCaller autoCaller(this); 265 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 266 267 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 268 269 if (aVeto) 270 m->mVetoList.push_back(aVeto); 271 272 m->mVetoed = TRUE; 273 274 return S_OK; 275 } 276 277 STDMETHODIMP VBoxVetoEvent::IsVetoed(BOOL * aResult) 278 { 279 CheckComArgOutPointerValid(aResult); 280 281 AutoCaller autoCaller(this); 282 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 283 284 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 285 286 *aResult = m->mVetoed; 287 288 return S_OK; 289 } 290 291 STDMETHODIMP VBoxVetoEvent::GetVetos(ComSafeArrayOut(BSTR, aVetos)) 292 { 293 if (ComSafeArrayOutIsNull(aVetos)) 294 return E_POINTER; 295 296 AutoCaller autoCaller(this); 297 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 298 299 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 300 com::SafeArray<BSTR> vetos(m->mVetoList.size()); 301 int i = 0; 302 for (VetoList::const_iterator it = m->mVetoList.begin(); 303 it != m->mVetoList.end(); 304 ++it, ++i) 305 { 306 const Bstr &str = *it; 307 str.cloneTo(&vetos[i]); 308 } 309 vetos.detachTo(ComSafeArrayOutArg(aVetos)); 310 311 return S_OK; 312 209 313 } 210 314 … … 397 501 } 398 502 399 HRESULT ListenerRecord::process(IEvent* aEvent, 400 BOOL aWaitable, 401 PendingEventsMap::iterator& pit, 503 HRESULT ListenerRecord::process(IEvent* aEvent, 504 BOOL aWaitable, 505 PendingEventsMap::iterator& pit, 402 506 AutoLockBase& aAlock) 403 507 { … … 437 541 } 438 542 439 HRESULT ListenerRecord::dequeue (IEvent* *aEvent, 440 LONG aTimeout, 543 HRESULT ListenerRecord::dequeue (IEvent* *aEvent, 544 LONG aTimeout, 441 545 AutoLockBase& aAlock) 442 546 { … … 448 552 // retain listener record 449 553 ListenerRecordHolder holder(this); 450 ::RTCritSectLeave(&mcsQLock); 554 ::RTCritSectLeave(&mcsQLock); 451 555 // Speed up common case 452 556 if (aTimeout == 0) -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r30510 r30521 6422 6422 issued by <link to="IConsole::attachUSBDevice"/> or 6423 6423 <link to="IConsole::detachUSBDevice"/>. 6424 6425 6424 This notification is sent in case of both a succeeded and a 6426 6425 failed request completion. When the request succeeds, the … … 14759 14758 </desc> 14760 14759 </const> 14760 <const name="OnCPUChange" value="60"> 14761 <desc> 14762 <see>IConsoleCallback::onCPUChange</see> 14763 </desc> 14764 </const> 14765 <const name="OnRemoteDisplayInfoChange" value="61"> 14766 <desc> 14767 <see>IConsoleCallback::onRemoteDisplayInfoChange</see> 14768 </desc> 14769 </const> 14761 14770 <!-- Last event marker --> 14762 <const name="Last" value="6 0">14771 <const name="Last" value="62"> 14763 14772 <desc> 14764 14773 Must be last event, used for iterations and structures relying on numerical event values. … … 15198 15207 15199 15208 <interface 15209 name="IKeyboardLedsChangeEvent" extends="IEvent" 15210 uuid="6DDEF35E-4737-457B-99FC-BC52C851A44F" 15211 wsmap="managed" autogen="VBoxEvent" id="OnKeyboardLedsChange" 15212 > 15213 <desc> 15214 Notification when the guest OS executes the KBD_CMD_SET_LEDS command 15215 to alter the state of the keyboard LEDs. 15216 </desc> 15217 <attribute name="numLock" type="boolean" readonly="yes"> 15218 <desc> 15219 NumLock status. 15220 </desc> 15221 </attribute> 15222 <attribute name="capsLock" type="boolean" readonly="yes"> 15223 <desc> 15224 CapsLock status. 15225 </desc> 15226 </attribute> 15227 <attribute name="scrollLock" type="boolean" readonly="yes"> 15228 <desc> 15229 ScrollLock status. 15230 </desc> 15231 </attribute> 15232 </interface> 15233 15234 <interface 15235 name="IStateChangeEvent" extends="IEvent" 15236 uuid="4376693C-CF37-453B-9289-3B0F521CAF27" 15237 wsmap="managed" autogen="VBoxEvent" id="OnStateChange" 15238 > 15239 <desc> 15240 Notification when the execution state of the machine has changed. 15241 The new state is given. 15242 </desc> 15243 <attribute name="state" type="MachineState" readonly="yes"> 15244 <desc> 15245 New machine state. 15246 </desc> 15247 </attribute> 15248 </interface> 15249 15250 <interface 15251 name="IAdditionsChangeEvent" extends="IEvent" 15252 uuid="D70F7915-DA7C-44C8-A7AC-9F173490446A" 15253 wsmap="managed" autogen="VBoxEvent" id="OnAdditionsStateChange" 15254 > 15255 <desc> 15256 Notification when a Guest Additions property changes. 15257 Interested callees should query IGuest attributes to 15258 find out what has changed. 15259 </desc> 15260 </interface> 15261 15262 <interface 15263 name="INetworkAdapterChangeEvent" extends="IEvent" 15264 uuid="4376693C-CF37-453B-9289-3B0F521CAF27" 15265 wsmap="managed" autogen="VBoxEvent" id="OnNetworkAdapterChange" 15266 > 15267 <desc> 15268 Notification when a property of one of the 15269 virtual <link to="IMachine::getNetworkAdapter">network adapters</link> 15270 changes. Interested callees should use INetworkAdapter methods and 15271 attributes to find out what has changed. 15272 </desc> 15273 <attribute name="networkAdapter" type="INetworkAdapter" readonly="yes"> 15274 <desc> 15275 Network adapter that is subject to change. 15276 </desc> 15277 </attribute> 15278 </interface> 15279 15280 <interface 15281 name="ISerialPortChangeEvent" extends="IEvent" 15282 uuid="3BA329DC-659C-488B-835C-4ECA7AE71C6C" 15283 wsmap="managed" autogen="VBoxEvent" id="OnSerialPortChange" 15284 > 15285 <desc> 15286 Notification when a property of one of the 15287 virtual <link to="IMachine::getSerialPort">serial ports</link> changes. 15288 Interested callees should use ISerialPort methods and attributes 15289 to find out what has changed. 15290 </desc> 15291 <attribute name="serialPort" type="ISerialPort" readonly="yes"> 15292 <desc> 15293 Serial port that is subject to change. 15294 </desc> 15295 </attribute> 15296 </interface> 15297 15298 <interface 15299 name="IParallelPortChangeEvent" extends="IEvent" 15300 uuid="813C99FC-9849-4F47-813E-24A75DC85615" 15301 wsmap="managed" autogen="VBoxEvent" id="OnParallelPortChange" 15302 > 15303 <desc> 15304 Notification when a property of one of the 15305 virtual <link to="IMachine::getParallelPort">parallel ports</link> 15306 changes. Interested callees should use ISerialPort methods and 15307 attributes to find out what has changed. 15308 </desc> 15309 <attribute name="parallelPort" type="IParallelPort" readonly="yes"> 15310 <desc> 15311 Parallel port that is subject to change. 15312 </desc> 15313 </attribute> 15314 </interface> 15315 15316 <interface 15317 name="IStorageControllerChangeEvent" extends="IEvent" 15318 uuid="715212BF-DA59-426E-8230-3831FAA52C56" 15319 wsmap="managed" autogen="VBoxEvent" id="OnStorageControllerChange" 15320 > 15321 <desc> 15322 Notification when a 15323 <link to="IMachine::mediumAttachments">medium attachment</link> 15324 changes. 15325 </desc> 15326 </interface> 15327 15328 <interface 15329 name="IMediumChangeEvent" extends="IEvent" 15330 uuid="0FE2DA40-5637-472A-9736-72019EABD7DE" 15331 wsmap="managed" autogen="VBoxEvent" id="OnMediumChange" 15332 > 15333 <desc> 15334 Notification when a 15335 <link to="IMachine::mediumAttachments">medium attachment</link> 15336 changes. 15337 </desc> 15338 <attribute name="mediumAttachment" type="IMediumAttachment" readonly="yes"> 15339 <desc> 15340 Medium attachment that is subject to change. 15341 </desc> 15342 </attribute> 15343 </interface> 15344 15345 <interface 15346 name="ICPUChangeEvent" extends="IEvent" 15347 uuid="D0F0BECC-EE17-4D17-A8CC-383B0EB55E9D" 15348 wsmap="managed" autogen="VBoxEvent" id="OnCPUChange" 15349 > 15350 <desc> 15351 Notification when a CPU changes. 15352 </desc> 15353 <attribute name="cpu" type="unsigned long" readonly="yes"> 15354 <desc> 15355 The CPU which changed. 15356 </desc> 15357 </attribute> 15358 <attribute name="add" type="boolean" readonly="yes"> 15359 <desc> 15360 Flag whether the CPU was added or removed. 15361 </desc> 15362 </attribute> 15363 </interface> 15364 15365 <interface 15366 name="IVRDPServerChangeEvent" extends="IEvent" 15367 uuid="726038B6-6279-4A7A-8037-D041693D1915" 15368 wsmap="managed" autogen="VBoxEvent" id="OnVRDPServerChange" 15369 > 15370 <desc> 15371 Notification when a property of the 15372 <link to="IMachine::VRDPServer">VRDP server</link> changes. 15373 Interested callees should use IVRDPServer methods and attributes to 15374 find out what has changed. 15375 </desc> 15376 </interface> 15377 15378 <interface 15379 name="IRemoteDisplayInfoChangeEvent" extends="IEvent" 15380 uuid="65B556C5-2A99-47D8-B311-FC177F0914CD" 15381 wsmap="managed" autogen="VBoxEvent" id="OnRemoteDisplayInfoChange" 15382 > 15383 <desc> 15384 Notification when the status of the VRDP server changes. Interested callees 15385 should use <link to="IConsole::RemoteDisplayInfo">IRemoteDisplayInfo</link> 15386 attributes to find out what is the current status. 15387 </desc> 15388 </interface> 15389 15390 <interface 15391 name="IUSBControllerChangeEvent" extends="IEvent" 15392 uuid="65B556C5-2A99-47D8-B311-FC177F0914CD" 15393 wsmap="managed" autogen="VBoxEvent" id="OnUSBControllerChange" 15394 > 15395 <desc> 15396 Notification when a property of the virtual 15397 <link to="IMachine::USBController">USB controller</link> changes. 15398 Interested callees should use IUSBController methods and attributes to 15399 find out what has changed. 15400 </desc> 15401 </interface> 15402 15403 <interface 15404 name="IUSBDevceStateChangeEvent" extends="IEvent" 15405 uuid="65B556C5-2A99-47D8-B311-FC177F0914CD" 15406 wsmap="managed" autogen="VBoxEvent" id="OnUSBDeviceStateChange" 15407 > 15408 <desc> 15409 Notification when a USB device is attached to or detached from 15410 the virtual USB controller. 15411 15412 This notification is sent as a result of the indirect 15413 request to attach the device because it matches one of the 15414 machine USB filters, or as a result of the direct request 15415 issued by <link to="IConsole::attachUSBDevice"/> or 15416 <link to="IConsole::detachUSBDevice"/>. 15417 15418 This notification is sent in case of both a succeeded and a 15419 failed request completion. When the request succeeds, the 15420 @a error parameter is @c null, and the given device has been 15421 already added to (when @a attached is @c true) or removed from 15422 (when @a attached is @c false) the collection represented by 15423 <link to="IConsole::USBDevices"/>. On failure, the collection 15424 doesn't change and the @a error parameter represents the error 15425 message describing the failure. 15426 </desc> 15427 <attribute name="device" type="IUSBDevice" readonly="yes"> 15428 <desc> 15429 Device that is subject to state change. 15430 </desc> 15431 </attribute> 15432 <attribute name="attached" type="boolean" readonly="yes"> 15433 <desc> 15434 @c true if the device was attached and @c false otherwise. 15435 </desc> 15436 </attribute> 15437 <attribute name="error" type="IVirtualBoxErrorInfo" readonly="yes"> 15438 <desc> 15439 @c null on success or an error message object on failure. 15440 </desc> 15441 </attribute> 15442 </interface> 15443 15444 <interface 15445 name="ISharedFolderChangeEvent" extends="IEvent" 15446 uuid="B66349B5-3534-4239-B2DE-8E1535D94C0B" 15447 wsmap="managed" autogen="VBoxEvent" id="OnSharedFolderChange" 15448 > 15449 <desc> 15450 Notification when a shared folder is added or removed. 15451 The @a scope argument defines one of three scopes: 15452 <link to="IVirtualBox::sharedFolders">global shared folders</link> 15453 (<link to="Scope_Global">Global</link>), 15454 <link to="IMachine::sharedFolders">permanent shared folders</link> of 15455 the machine (<link to="Scope_Machine">Machine</link>) or <link 15456 to="IConsole::sharedFolders">transient shared folders</link> of the 15457 machine (<link to="Scope_Session">Session</link>). Interested callees 15458 should use query the corresponding collections to find out what has 15459 changed. 15460 </desc> 15461 <attribute name="scope" type="Scope" readonly="yes"> 15462 <desc> 15463 Scope of the notification. 15464 </desc> 15465 </attribute> 15466 </interface> 15467 15468 <interface 15469 name="IRuntimeErrorEvent" extends="IEvent" 15470 uuid="883DD18B-0721-4CDE-867C-1A82ABAF914C" 15471 wsmap="managed" autogen="VBoxEvent" id="OnRuntimeError" 15472 > 15473 <desc> 15474 Notification when an error happens during the virtual 15475 machine execution. 15476 15477 There are three kinds of runtime errors: 15478 <ul> 15479 <li><i>fatal</i></li> 15480 <li><i>non-fatal with retry</i></li> 15481 <li><i>non-fatal warnings</i></li> 15482 </ul> 15483 15484 <b>Fatal</b> errors are indicated by the @a fatal parameter set 15485 to @c true. In case of fatal errors, the virtual machine 15486 execution is always paused before calling this notification, and 15487 the notification handler is supposed either to immediately save 15488 the virtual machine state using <link to="IConsole::saveState"/> 15489 or power it off using <link to="IConsole::powerDown"/>. 15490 Resuming the execution can lead to unpredictable results. 15491 15492 <b>Non-fatal</b> errors and warnings are indicated by the 15493 @a fatal parameter set to @c false. If the virtual machine 15494 is in the Paused state by the time the error notification is 15495 received, it means that the user can <i>try to resume</i> the machine 15496 execution after attempting to solve the problem that caused the 15497 error. In this case, the notification handler is supposed 15498 to show an appropriate message to the user (depending on the 15499 value of the @a id parameter) that offers several actions such 15500 as <i>Retry</i>, <i>Save</i> or <i>Power Off</i>. If the user 15501 wants to retry, the notification handler should continue 15502 the machine execution using the <link to="IConsole::resume"/> 15503 call. If the machine execution is not Paused during this 15504 notification, then it means this notification is a <i>warning</i> 15505 (for example, about a fatal condition that can happen very soon); 15506 no immediate action is required from the user, the machine 15507 continues its normal execution. 15508 15509 Note that in either case the notification handler 15510 <b>must not</b> perform any action directly on a thread 15511 where this notification is called. Everything it is allowed to 15512 do is to post a message to another thread that will then talk 15513 to the user and take the corresponding action. 15514 15515 Currently, the following error identifiers are known: 15516 <ul> 15517 <li><tt>"HostMemoryLow"</tt></li> 15518 <li><tt>"HostAudioNotResponding"</tt></li> 15519 <li><tt>"VDIStorageFull"</tt></li> 15520 <li><tt>"3DSupportIncompatibleAdditions"</tt></li> 15521 </ul> 15522 </desc> 15523 <attribute name="fatal" type="boolean" readonly="yes"> 15524 <desc> 15525 Whether the error is fatal or not. 15526 </desc> 15527 </attribute> 15528 <attribute name="id" type="wstring" readonly="yes"> 15529 <desc> 15530 Error identifier. 15531 </desc> 15532 </attribute> 15533 <attribute name="message" type="wstring" readonly="yes"> 15534 <desc> 15535 Optional error message. 15536 </desc> 15537 </attribute> 15538 </interface> 15539 15540 <interface 15200 15541 name="IExtraDataChangeEvent" extends="IEvent" 15201 15542 uuid="024F00CE-6E0B-492A-A8D0-968472A94DC7" … … 15237 15578 <param name="reason" type="wstring" dir="in"> 15238 15579 <desc> 15580 Reason for veto, could be null or empty string. 15581 </desc> 15582 </param> 15583 </method> 15584 15585 <method name="isVetoed"> 15586 <desc> 15587 If this event was vetoed. 15588 </desc> 15589 <param name="result" type="boolean" dir="return"> 15590 <desc> 15239 15591 Reason for veto. 15240 15592 </desc> … … 15242 15594 </method> 15243 15595 15244 <method name="isVetoed">15245 <desc>15246 If this event was vetoed.15247 </desc>15248 <param name="result" type="boolean" dir="return">15249 <desc>15250 Reason for veto.15251 </desc>15252 </param>15253 </method>15254 15255 15596 <method name="getVetos"> 15256 15597 <desc> 15257 Current veto list, if size is 0 - no veto.15598 Current veto reason list, if size is 0 - no veto. 15258 15599 </desc> 15259 15600 <param name="result" type="wstring" dir="return" safearray="yes"> 15260 15601 <desc> 15261 Reason for veto.15602 Array of reasons for veto provided by different event handlers. 15262 15603 </desc> 15263 15604 </param> … … 15314 15655 </interface> 15315 15656 15657 <interface 15658 name="IShowWindowEvent" extends="IEvent" 15659 uuid="B0A0904D-2F05-4D28-855F-488F96BAD2B2" 15660 wsmap="managed" autogen="VBoxEvent" id="OnShowWindow" 15661 waitable="true" 15662 > 15663 <desc> 15664 Notification when a call to 15665 <link to="IMachine::showConsoleWindow"/> 15666 requests the console window to be activated and brought to 15667 foreground on the desktop of the host PC. 15668 15669 This notification should cause the VM console process to 15670 perform the requested action as described above. If it is 15671 impossible to do it at a time of this notification, this 15672 method should return a failure. 15673 15674 Note that many modern window managers on many platforms 15675 implement some sort of focus stealing prevention logic, so 15676 that it may be impossible to activate a window without the 15677 help of the currently active application (which is supposedly 15678 an initiator of this notification). In this case, this method 15679 must return a non-zero identifier that represents the 15680 top-level window of the VM console process. The caller, if it 15681 represents a currently active process, is responsible to use 15682 this identifier (in a platform-dependent manner) to perform 15683 actual window activation. 15684 15685 This method must set @a winId to zero if it has performed all 15686 actions necessary to complete the request and the console 15687 window is now active and in foreground, to indicate that no 15688 further action is required on the caller's side. 15689 </desc> 15690 <attribute name="winId" type="unsigned long long" readonly="yes"> 15691 <desc> 15692 Platform-dependent identifier of the top-level VM console 15693 window, or zero if this method has performed all actions 15694 necessary to implement the <i>show window</i> semantics for 15695 the given platform and/or this VirtualBox front-end. 15696 </desc> 15697 </attribute> 15698 </interface> 15699 15316 15700 <module name="VBoxSVC" context="LocalServer"> 15317 15701 <class name="VirtualBox" uuid="B1A7A4F2-47B9-4A1E-82B2-07CCD5323C3F" -
trunk/src/VBox/Main/idl/comimpl.xsl
r30510 r30521 101 101 <xsl:value-of select="concat($type,'_T')"/> 102 102 </xsl:when> 103 <xsl:when test="//interface[@name=$type]"> 104 <xsl:choose> 105 <xsl:when test="$param='no'"> 106 <xsl:value-of select="concat('ComPtr<',$type,'>')"/> 107 </xsl:when> 108 <xsl:when test="$param='yes'"> 109 <xsl:value-of select="concat($type,'*')"/> 110 </xsl:when> 111 </xsl:choose> 112 </xsl:when> 103 113 <xsl:when test="$type='boolean'"> 104 114 <xsl:value-of select="'BOOL'" /> … … 109 119 <xsl:when test="$type='long'"> 110 120 <xsl:value-of select="'LONG'" /> 121 </xsl:when> 122 <xsl:when test="$type='unsigned long long'"> 123 <xsl:value-of select="'ULONG64'" /> 124 </xsl:when> 125 <xsl:when test="$type='long long'"> 126 <xsl:value-of select="'LONG64'" /> 111 127 </xsl:when> 112 128 <xsl:otherwise> … … 140 156 <xsl:when test="($type='wstring') or ($type = 'uuid')"> 141 157 <xsl:value-of select="concat(' ', $member, '.cloneTo(', $param, '); ')"/> 158 </xsl:when> 159 <xsl:when test="//interface[@name=$type]"> 160 <xsl:value-of select="concat(' ', $member, '.queryInterfaceTo(', $param, '); ')"/> 142 161 </xsl:when> 143 162 <xsl:otherwise> … … 429 448 <xsl:text><![CDATA[ 430 449 default: 431 if ( 0) AssertFailed();450 if (1) AssertFailed(); 432 451 } 433 452 va_end(args); -
trunk/src/VBox/Main/include/EventImpl.h
r30477 r30521 61 61 // for VirtualBoxSupportErrorInfoImpl 62 62 static const wchar_t *getComponentName() { return L"Event"; } 63 64 private: 65 struct Data; 66 67 Data* m; 68 }; 69 70 class ATL_NO_VTABLE VBoxVetoEvent : 71 public VBoxEvent, 72 VBOX_SCRIPTABLE_IMPL(IVetoEvent) 73 { 74 public: 75 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(VBoxVetoEvent) 76 77 DECLARE_NOT_AGGREGATABLE(VBoxVetoEvent) 78 79 DECLARE_PROTECT_FINAL_CONSTRUCT() 80 81 BEGIN_COM_MAP(VBoxEvent) 82 COM_INTERFACE_ENTRY(ISupportErrorInfo) 83 COM_INTERFACE_ENTRY(IEvent) 84 COM_INTERFACE_ENTRY(IVetoEvent) 85 COM_INTERFACE_ENTRY(IDispatch) 86 END_COM_MAP() 87 88 VBoxVetoEvent() {} 89 virtual ~VBoxVetoEvent() {} 90 91 HRESULT FinalConstruct(); 92 void FinalRelease(); 93 94 // public initializer/uninitializer for internal purposes only 95 HRESULT init (IEventSource *aSource, VBoxEventType_T aType); 96 void uninit(); 97 98 // IVetoEvent methods 99 STDMETHOD(AddVeto)(IN_BSTR aVeto); 100 STDMETHOD(IsVetoed)(BOOL *aResult); 101 STDMETHOD(GetVetos)(ComSafeArrayOut(BSTR, aVetos)); 102 103 // for VirtualBoxSupportErrorInfoImpl 104 static const wchar_t *getComponentName() { return L"VetoEvent"; } 63 105 64 106 private: … … 133 175 134 176 /** 135 * This function to be used with some care, as arguments order must match attribute declaration order 136 * event class and its superclasses up to IEvent. If unsure, consult implementation in 177 * This function to be used with some care, as arguments order must match attribute declaration order 178 * event class and its superclasses up to IEvent. If unsure, consult implementation in 137 179 * generated VBoxEvents.cpp. 138 180 */
Note:
See TracChangeset
for help on using the changeset viewer.