]> git.proxmox.com Git - mirror_edk2.git/blob - EdkModulePkg/Universal/Console/ConSplitter/Dxe/ConSplitter.h
Merge GOP related code from r8->r9.
[mirror_edk2.git] / EdkModulePkg / Universal / Console / ConSplitter / Dxe / ConSplitter.h
1 /*++
2
3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 ConSplitter.h
15
16 Abstract:
17
18 Private data structures for the Console Splitter driver
19
20 --*/
21
22 #ifndef SPLITER_H_
23 #define SPLITER_H_
24
25 //
26 // Private Data Structures
27 //
28 #define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32
29 #define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32
30 #define MAX_STD_IN_PASSWORD 80
31
32 typedef struct {
33 UINTN Columns;
34 UINTN Rows;
35 } TEXT_OUT_SPLITTER_QUERY_DATA;
36
37 //
38 // Private data for the EFI_SIMPLE_INPUT_PROTOCOL splitter
39 //
40 #define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')
41
42 typedef struct {
43 UINT64 Signature;
44 EFI_HANDLE VirtualHandle;
45
46 EFI_SIMPLE_TEXT_IN_PROTOCOL TextIn;
47 UINTN CurrentNumberOfConsoles;
48 EFI_SIMPLE_TEXT_IN_PROTOCOL **TextInList;
49 UINTN TextInListCount;
50
51 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;
52 EFI_SIMPLE_POINTER_MODE SimplePointerMode;
53 UINTN CurrentNumberOfPointers;
54 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;
55 UINTN PointerListCount;
56
57 BOOLEAN PasswordEnabled;
58 CHAR16 Password[MAX_STD_IN_PASSWORD];
59 UINTN PwdIndex;
60 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];
61 EFI_EVENT LockEvent;
62
63 BOOLEAN KeyEventSignalState;
64 BOOLEAN InputEventSignalState;
65 } TEXT_IN_SPLITTER_PRIVATE_DATA;
66
67 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
68 CR (a, \
69 TEXT_IN_SPLITTER_PRIVATE_DATA, \
70 TextIn, \
71 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
72 )
73
74 #define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \
75 CR (a, \
76 TEXT_IN_SPLITTER_PRIVATE_DATA, \
77 SimplePointer, \
78 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \
79 )
80
81 //
82 // Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter
83 //
84 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')
85
86 typedef struct {
87 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
88 EFI_UGA_DRAW_PROTOCOL *UgaDraw;
89 EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut;
90 BOOLEAN TextOutEnabled;
91 } TEXT_OUT_AND_GOP_DATA;
92
93 typedef struct {
94 UINT32 HorizontalResolution;
95 UINT32 VerticalResolution;
96 } TEXT_OUT_GOP_MODE;
97
98 typedef struct {
99 UINT64 Signature;
100 EFI_HANDLE VirtualHandle;
101 EFI_SIMPLE_TEXT_OUT_PROTOCOL TextOut;
102 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;
103
104 #if (EFI_SPECIFICATION_VERSION < 0x00020000)
105 EFI_UGA_DRAW_PROTOCOL UgaDraw;
106 UINT32 UgaHorizontalResolution;
107 UINT32 UgaVerticalResolution;
108 UINT32 UgaColorDepth;
109 UINT32 UgaRefreshRate;
110 EFI_UGA_PIXEL *UgaBlt;
111 #else
112 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;
113 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;
114 TEXT_OUT_GOP_MODE *GraphicsOutputModeBuffer;
115 UINTN CurrentNumberOfGraphicsOutput;
116 BOOLEAN HardwareNeedsStarting;
117 #endif
118
119 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;
120
121 UINTN CurrentNumberOfConsoles;
122 TEXT_OUT_AND_GOP_DATA *TextOutList;
123 UINTN TextOutListCount;
124 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;
125 UINTN TextOutQueryDataCount;
126 INT32 *TextOutModeMap;
127
128 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;
129
130 UINTN DevNullColumns;
131 UINTN DevNullRows;
132 CHAR16 *DevNullScreen;
133 INT32 *DevNullAttributes;
134
135 } TEXT_OUT_SPLITTER_PRIVATE_DATA;
136
137 #define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
138 CR (a, \
139 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
140 TextOut, \
141 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
142 )
143
144 #define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
145 CR (a, \
146 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
147 GraphicsOutput, \
148 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
149 )
150
151 #define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
152 CR (a, \
153 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
154 UgaDraw, \
155 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
156 )
157
158 #define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \
159 CR (a, \
160 TEXT_OUT_SPLITTER_PRIVATE_DATA, \
161 ConsoleControl, \
162 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \
163 )
164
165 //
166 // Function Prototypes
167 //
168 EFI_STATUS
169 EFIAPI
170 ConSplitterDriverEntry (
171 IN EFI_HANDLE ImageHandle,
172 IN EFI_SYSTEM_TABLE *SystemTable
173 )
174 ;
175
176 STATIC
177 EFI_STATUS
178 ConSplitterTextInConstructor (
179 TEXT_IN_SPLITTER_PRIVATE_DATA *Private
180 )
181 ;
182
183 STATIC
184 EFI_STATUS
185 ConSplitterTextOutConstructor (
186 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
187 )
188 ;
189
190 //
191 // Driver Binding Functions
192 //
193 STATIC
194 EFI_STATUS
195 EFIAPI
196 ConSplitterConInDriverBindingSupported (
197 IN EFI_DRIVER_BINDING_PROTOCOL *This,
198 IN EFI_HANDLE ControllerHandle,
199 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
200 )
201 ;
202
203 STATIC
204 EFI_STATUS
205 EFIAPI
206 ConSplitterSimplePointerDriverBindingSupported (
207 IN EFI_DRIVER_BINDING_PROTOCOL *This,
208 IN EFI_HANDLE ControllerHandle,
209 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
210 )
211 ;
212
213 STATIC
214 EFI_STATUS
215 EFIAPI
216 ConSplitterConOutDriverBindingSupported (
217 IN EFI_DRIVER_BINDING_PROTOCOL *This,
218 IN EFI_HANDLE ControllerHandle,
219 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
220 )
221 ;
222
223 STATIC
224 EFI_STATUS
225 EFIAPI
226 ConSplitterStdErrDriverBindingSupported (
227 IN EFI_DRIVER_BINDING_PROTOCOL *This,
228 IN EFI_HANDLE ControllerHandle,
229 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
230 )
231 ;
232
233 STATIC
234 EFI_STATUS
235 EFIAPI
236 ConSplitterConInDriverBindingStart (
237 IN EFI_DRIVER_BINDING_PROTOCOL *This,
238 IN EFI_HANDLE ControllerHandle,
239 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
240 )
241 ;
242
243 STATIC
244 EFI_STATUS
245 EFIAPI
246 ConSplitterSimplePointerDriverBindingStart (
247 IN EFI_DRIVER_BINDING_PROTOCOL *This,
248 IN EFI_HANDLE ControllerHandle,
249 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
250 )
251 ;
252
253 STATIC
254 EFI_STATUS
255 EFIAPI
256 ConSplitterConOutDriverBindingStart (
257 IN EFI_DRIVER_BINDING_PROTOCOL *This,
258 IN EFI_HANDLE ControllerHandle,
259 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
260 )
261 ;
262
263 STATIC
264 EFI_STATUS
265 EFIAPI
266 ConSplitterStdErrDriverBindingStart (
267 IN EFI_DRIVER_BINDING_PROTOCOL *This,
268 IN EFI_HANDLE ControllerHandle,
269 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
270 )
271 ;
272
273 STATIC
274 EFI_STATUS
275 EFIAPI
276 ConSplitterConInDriverBindingStop (
277 IN EFI_DRIVER_BINDING_PROTOCOL *This,
278 IN EFI_HANDLE ControllerHandle,
279 IN UINTN NumberOfChildren,
280 IN EFI_HANDLE *ChildHandleBuffer
281 )
282 ;
283
284 STATIC
285 EFI_STATUS
286 EFIAPI
287 ConSplitterSimplePointerDriverBindingStop (
288 IN EFI_DRIVER_BINDING_PROTOCOL *This,
289 IN EFI_HANDLE ControllerHandle,
290 IN UINTN NumberOfChildren,
291 IN EFI_HANDLE *ChildHandleBuffer
292 )
293 ;
294
295 STATIC
296 EFI_STATUS
297 EFIAPI
298 ConSplitterConOutDriverBindingStop (
299 IN EFI_DRIVER_BINDING_PROTOCOL *This,
300 IN EFI_HANDLE ControllerHandle,
301 IN UINTN NumberOfChildren,
302 IN EFI_HANDLE *ChildHandleBuffer
303 )
304 ;
305
306 STATIC
307 EFI_STATUS
308 EFIAPI
309 ConSplitterStdErrDriverBindingStop (
310 IN EFI_DRIVER_BINDING_PROTOCOL *This,
311 IN EFI_HANDLE ControllerHandle,
312 IN UINTN NumberOfChildren,
313 IN EFI_HANDLE *ChildHandleBuffer
314 )
315 ;
316
317 //
318 // TextIn Constructor/Destructor functions
319 //
320 EFI_STATUS
321 ConSplitterTextInAddDevice (
322 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
323 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn
324 )
325 ;
326
327 EFI_STATUS
328 ConSplitterTextInDeleteDevice (
329 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
330 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn
331 )
332 ;
333
334 //
335 // SimplePointer Constuctor/Destructor functions
336 //
337 EFI_STATUS
338 ConSplitterSimplePointerAddDevice (
339 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
340 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
341 )
342 ;
343
344 EFI_STATUS
345 ConSplitterSimplePointerDeleteDevice (
346 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
347 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer
348 )
349 ;
350
351 //
352 // TextOut Constuctor/Destructor functions
353 //
354 EFI_STATUS
355 ConSplitterTextOutAddDevice (
356 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
357 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut,
358 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
359 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
360 )
361 ;
362
363 EFI_STATUS
364 ConSplitterTextOutDeleteDevice (
365 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
366 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut
367 )
368 ;
369
370 //
371 // TextIn I/O Functions
372 //
373 EFI_STATUS
374 EFIAPI
375 ConSplitterTextInReset (
376 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,
377 IN BOOLEAN ExtendedVerification
378 )
379 ;
380
381 EFI_STATUS
382 EFIAPI
383 ConSplitterTextInReadKeyStroke (
384 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,
385 OUT EFI_INPUT_KEY *Key
386 )
387 ;
388
389 VOID
390 EFIAPI
391 ConSplitterTextInWaitForKey (
392 IN EFI_EVENT Event,
393 IN VOID *Context
394 )
395 ;
396
397 BOOLEAN
398 ConSpliterConssoleControlStdInLocked (
399 VOID
400 )
401 ;
402
403 VOID
404 EFIAPI
405 ConSpliterConsoleControlLockStdInEvent (
406 IN EFI_EVENT Event,
407 IN VOID *Context
408 )
409 ;
410
411 EFI_STATUS
412 EFIAPI
413 ConSpliterConsoleControlLockStdIn (
414 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
415 IN CHAR16 *Password
416 )
417 ;
418
419 EFI_STATUS
420 EFIAPI
421 ConSplitterTextInPrivateReadKeyStroke (
422 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
423 OUT EFI_INPUT_KEY *Key
424 )
425 ;
426
427 EFI_STATUS
428 EFIAPI
429 ConSplitterSimplePointerReset (
430 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
431 IN BOOLEAN ExtendedVerification
432 )
433 ;
434
435 EFI_STATUS
436 EFIAPI
437 ConSplitterSimplePointerGetState (
438 IN EFI_SIMPLE_POINTER_PROTOCOL *This,
439 IN OUT EFI_SIMPLE_POINTER_STATE *State
440 )
441 ;
442
443 VOID
444 EFIAPI
445 ConSplitterSimplePointerWaitForInput (
446 IN EFI_EVENT Event,
447 IN VOID *Context
448 )
449 ;
450
451 //
452 // TextOut I/O Functions
453 //
454 VOID
455 ConSplitterSynchronizeModeData (
456 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
457 )
458 ;
459
460 EFI_STATUS
461 EFIAPI
462 ConSplitterTextOutReset (
463 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
464 IN BOOLEAN ExtendedVerification
465 )
466 ;
467
468 EFI_STATUS
469 EFIAPI
470 ConSplitterTextOutOutputString (
471 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
472 IN CHAR16 *WString
473 )
474 ;
475
476 EFI_STATUS
477 EFIAPI
478 ConSplitterTextOutTestString (
479 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
480 IN CHAR16 *WString
481 )
482 ;
483
484 EFI_STATUS
485 EFIAPI
486 ConSplitterTextOutQueryMode (
487 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
488 IN UINTN ModeNumber,
489 OUT UINTN *Columns,
490 OUT UINTN *Rows
491 )
492 ;
493
494 EFI_STATUS
495 EFIAPI
496 ConSplitterTextOutSetMode (
497 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
498 IN UINTN ModeNumber
499 )
500 ;
501
502 EFI_STATUS
503 EFIAPI
504 ConSplitterTextOutSetAttribute (
505 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
506 IN UINTN Attribute
507 )
508 ;
509
510 EFI_STATUS
511 EFIAPI
512 ConSplitterTextOutClearScreen (
513 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This
514 )
515 ;
516
517 EFI_STATUS
518 EFIAPI
519 ConSplitterTextOutSetCursorPosition (
520 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
521 IN UINTN Column,
522 IN UINTN Row
523 )
524 ;
525
526 EFI_STATUS
527 EFIAPI
528 ConSplitterTextOutEnableCursor (
529 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,
530 IN BOOLEAN Visible
531 )
532 ;
533
534 EFI_STATUS
535 ConSplitterGrowBuffer (
536 IN UINTN SizeOfCount,
537 IN UINTN *Count,
538 IN OUT VOID **Buffer
539 )
540 ;
541
542 EFI_STATUS
543 EFIAPI
544 ConSpliterConsoleControlGetMode (
545 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
546 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
547 OUT BOOLEAN *GopExists,
548 OUT BOOLEAN *StdInLocked
549 )
550 ;
551
552 EFI_STATUS
553 EFIAPI
554 ConSpliterConsoleControlSetMode (
555 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
556 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
557 )
558 ;
559
560 EFI_STATUS
561 EFIAPI
562 ConSpliterGraphicsOutputQueryMode (
563 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
564 IN UINT32 ModeNumber,
565 OUT UINTN *SizeOfInfo,
566 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info
567 )
568 ;
569
570 EFI_STATUS
571 EFIAPI
572 ConSpliterGraphicsOutputSetMode (
573 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,
574 IN UINT32 ModeNumber
575 )
576 ;
577
578 EFI_STATUS
579 EFIAPI
580 ConSpliterGraphicsOutputBlt (
581 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
582 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL
583 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,
584 IN UINTN SourceX,
585 IN UINTN SourceY,
586 IN UINTN DestinationX,
587 IN UINTN DestinationY,
588 IN UINTN Width,
589 IN UINTN Height,
590 IN UINTN Delta OPTIONAL
591 )
592 ;
593
594 EFI_STATUS
595 DevNullGopSync (
596 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
597 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,
598 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
599 )
600 ;
601
602 #if (EFI_SPECIFICATION < 0x00020000)
603 EFI_STATUS
604 EFIAPI
605 ConSpliterUgaDrawGetMode (
606 IN EFI_UGA_DRAW_PROTOCOL *This,
607 OUT UINT32 *HorizontalResolution,
608 OUT UINT32 *VerticalResolution,
609 OUT UINT32 *ColorDepth,
610 OUT UINT32 *RefreshRate
611 )
612 ;
613
614 EFI_STATUS
615 EFIAPI
616 ConSpliterUgaDrawSetMode (
617 IN EFI_UGA_DRAW_PROTOCOL *This,
618 IN UINT32 HorizontalResolution,
619 IN UINT32 VerticalResolution,
620 IN UINT32 ColorDepth,
621 IN UINT32 RefreshRate
622 )
623 ;
624
625 EFI_STATUS
626 EFIAPI
627 ConSpliterUgaDrawBlt (
628 IN EFI_UGA_DRAW_PROTOCOL *This,
629 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL
630 IN EFI_UGA_BLT_OPERATION BltOperation,
631 IN UINTN SourceX,
632 IN UINTN SourceY,
633 IN UINTN DestinationX,
634 IN UINTN DestinationY,
635 IN UINTN Width,
636 IN UINTN Height,
637 IN UINTN Delta OPTIONAL
638 )
639 ;
640
641 EFI_STATUS
642 DevNullUgaSync (
643 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
644 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw
645 )
646 ;
647 #endif
648
649 EFI_STATUS
650 DevNullTextOutOutputString (
651 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
652 IN CHAR16 *WString
653 )
654 ;
655
656 EFI_STATUS
657 DevNullTextOutSetMode (
658 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
659 IN UINTN ModeNumber
660 )
661 ;
662
663 EFI_STATUS
664 DevNullTextOutClearScreen (
665 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
666 )
667 ;
668
669 EFI_STATUS
670 DevNullTextOutSetCursorPosition (
671 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
672 IN UINTN Column,
673 IN UINTN Row
674 )
675 ;
676
677 EFI_STATUS
678 DevNullTextOutEnableCursor (
679 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,
680 IN BOOLEAN Visible
681 )
682 ;
683
684 EFI_STATUS
685 DevNullSyncGopStdOut (
686 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private
687 )
688 ;
689
690 #endif