VirtualBox

source: vbox/trunk/src/VBox/Additions/WINNT/VBoxGINA/WinWlx.h@ 3317

Last change on this file since 3317 was 1, checked in by vboxsync, 55 years ago

import

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 35.0 KB
Line 
1/*++ BUILD Version: 0001 Increment this if a change has global effects
2
3Copyright (c) 1985-1999, Microsoft Corporation
4
5Module Name:
6
7 winwlx.h
8
9Abstract:
10
11 WLX == WinLogon eXtension
12
13 This file contains definitions, data types, and routine prototypes
14 necessary to produce a replacement Graphical Identification aNd
15 Authentication (GINA) DLL for Winlogon.
16
17Author:
18
19 Richard Ward (RichardW) and Jim Kelly (JimK) May-1994
20
21Revision History:
22
23
24
25--*/
26
27#ifndef _WINWLX_
28#define _WINWLX_
29
30#if _MSC_VER > 1000
31#pragma once
32#endif
33
34
35////////////////////////////////////////////////////////////////////////
36// //
37// #defines //
38// //
39////////////////////////////////////////////////////////////////////////
40
41
42/////////////////////////////////////////////////////////////////////////
43/////////////////////////////////////////////////////////////////////////
44//
45// Revisions of Winlogon API available for use by GINAs
46// Version is two parts: Major revision and minor revision.
47// Major revision is the upper 16-bits, minor is the lower
48// 16-bits.
49//
50
51#define WLX_VERSION_1_0 (0X00010000)
52#define WLX_VERSION_1_1 (0X00010001)
53#define WLX_VERSION_1_2 (0X00010002)
54#define WLX_VERSION_1_3 (0X00010003)
55#define WLX_VERSION_1_4 (0X00010004)
56#define WLX_CURRENT_VERSION (WLX_VERSION_1_4)
57
58#define ULONG_PTR DWORD
59
60
61/////////////////////////////////////////////////////////////////////////
62/////////////////////////////////////////////////////////////////////////
63//
64// Secure attention sequence types
65// These values are passed to routines that have a dwSasType
66// parameter.
67//
68// ALL VALUES FROM 0 TO 127 ARE RESERVED FOR MICROSOFT DEFINITION.
69// VALUES ABOVE 127 ARE RESERVED FOR CUSTOMER DEFINITION.
70//
71// CTRL_ALT_DEL - used to indicate that the standard ctrl-alt-del
72// secure attention sequence has been entered.
73//
74// SCRNSVR_TIMEOUT - used to indicate that keyboard/mouse inactivity
75// has lead to a screensaver activation. It is up to the GINA
76// DLL whether this constitutes a workstation locking event.
77//
78// SCRNSVR_ACTIVITY - used to indicate that keyboard or mouse
79// activity occured while a secure screensaver was active.
80//
81// SC_INSERT - used to indicate that a smart card has been inserted
82// to a compatible device
83//
84// SC_REMOVE - used to indicate that a smart card has been removed
85// from a compatible device
86//
87
88#define WLX_SAS_TYPE_TIMEOUT (0)
89#define WLX_SAS_TYPE_CTRL_ALT_DEL (1)
90#define WLX_SAS_TYPE_SCRNSVR_TIMEOUT (2)
91#define WLX_SAS_TYPE_SCRNSVR_ACTIVITY (3)
92#define WLX_SAS_TYPE_USER_LOGOFF (4)
93#define WLX_SAS_TYPE_SC_INSERT (5)
94#define WLX_SAS_TYPE_SC_REMOVE (6)
95#define WLX_SAS_TYPE_AUTHENTICATED (7)
96#define WLX_SAS_TYPE_SC_FIRST_READER_ARRIVED (8)
97#define WLX_SAS_TYPE_SC_LAST_READER_REMOVED (9)
98#define WLX_SAS_TYPE_SWITCHUSER (10)
99#define WLX_SAS_TYPE_MAX_MSFT_VALUE (127)
100
101
102//
103// This structure is available through WlxGetOption, and is
104// passed as the lParam for any S/C SAS notices sent to windows
105//
106typedef struct _WLX_SC_NOTIFICATION_INFO {
107 PWSTR pszCard ;
108 PWSTR pszReader ;
109 PWSTR pszContainer ;
110 PWSTR pszCryptoProvider ;
111} WLX_SC_NOTIFICATION_INFO, * PWLX_SC_NOTIFICATION_INFO ;
112
113
114
115/////////////////////////////////////////////////////////////////////////
116/////////////////////////////////////////////////////////////////////////
117//
118// Upon successful logon, the GINA DLL may specify any of the following
119// options to Winlogon (via the dwOptions parameter of the WlxLoggedOutSas()
120// api). When set, these options specify:
121//
122// NO_PROFILE - Winlogon must NOT load a profile for the logged
123// on user. Either the GINA DLL will take care of
124// this activity, or the user does not need a profile.
125//
126
127#define WLX_LOGON_OPT_NO_PROFILE (0x00000001)
128
129
130
131/////////////////////////////////////////////////////////////////////////
132/////////////////////////////////////////////////////////////////////////
133//
134// GINA DLLs are expected to return account information to Winlogon
135// following a successful logon. This information allows Winlogon
136// to support profile loading and supplemental network providers.
137//
138// To allow different sets of profile information to be returned
139// by GINAs over time, the first DWORD of each profile structure
140// is expected to contain a type-identifier. The following constants
141// are the defined profile type identifiers.
142//
143
144//
145// Standard profile is V2_0
146//
147
148#define WLX_PROFILE_TYPE_V1_0 (1)
149#define WLX_PROFILE_TYPE_V2_0 (2)
150
151
152
153/////////////////////////////////////////////////////////////////////////
154/////////////////////////////////////////////////////////////////////////
155//
156// WlxLoggedOnSas() and WlxWkstaLockedSas() return an action
157// value to Winlogon directing Winlogon to either remain unchanged
158// or to perform some action (such as force-log the user off).
159// These are the values that may be returned. Note, however, that
160// not all of the values may be returned by both of these api. See
161// the description of each api to see which values are expected from
162// each.
163//
164// LOGON - User has logged on
165// NONE - Don't change the state of the window station.
166// LOCK_WKSTA - Lock the workstation, wait for next SAS.
167// LOGOFF - Log the user off of the workstation.
168// SHUTDOWN - Log the user off and shutdown the machine.
169// PWD_CHANGED - Indicates that the user changed their password. Notify network providers.
170// TASKLIST - Invoke the task list.
171// UNLOCK_WKSTA - Unlock the workstation.
172// FORCE_LOGOFF - Forcibly log the user off.
173// SHUTDOWN_POWER_OFF - Turn off machine after shutting down.
174// SHUTDOWN_REBOOT - Reboot machine after shutting down.
175// SHUTDOWN_SLEEP - Put the machine to sleep
176// SHUTDOWN_SLEEP2 - Put the machine to sleep and disable wakeup events
177// SHUTDOWN_HIBERNATE - Hibernate the machine
178// RECONNECTED - Session was reconnected to an earlier session
179//
180
181#define WLX_SAS_ACTION_LOGON (1)
182#define WLX_SAS_ACTION_NONE (2)
183#define WLX_SAS_ACTION_LOCK_WKSTA (3)
184#define WLX_SAS_ACTION_LOGOFF (4)
185#define WLX_SAS_ACTION_SHUTDOWN (5)
186#define WLX_SAS_ACTION_PWD_CHANGED (6)
187#define WLX_SAS_ACTION_TASKLIST (7)
188#define WLX_SAS_ACTION_UNLOCK_WKSTA (8)
189#define WLX_SAS_ACTION_FORCE_LOGOFF (9)
190#define WLX_SAS_ACTION_SHUTDOWN_POWER_OFF (10)
191#define WLX_SAS_ACTION_SHUTDOWN_REBOOT (11)
192#define WLX_SAS_ACTION_SHUTDOWN_SLEEP (12)
193#define WLX_SAS_ACTION_SHUTDOWN_SLEEP2 (13)
194#define WLX_SAS_ACTION_SHUTDOWN_HIBERNATE (14)
195#define WLX_SAS_ACTION_RECONNECTED (15)
196#define WLX_SAS_ACTION_DELAYED_FORCE_LOGOFF (16)
197#define WLX_SAS_ACTION_SWITCH_CONSOLE (17)
198
199
200////////////////////////////////////////////////////////////////////////
201// //
202// Window Messages //
203// //
204////////////////////////////////////////////////////////////////////////
205
206//
207// The WM_SAS is defined as follows
208//
209// The wParam parameter has the SAS Type (above)
210
211#define WLX_WM_SAS (WM_USER + 601)
212
213
214//
215// Dialog return values
216//
217// These may be returned by dialogs started by a GINA dll.
218//
219#define WLX_DLG_SAS 101
220#define WLX_DLG_INPUT_TIMEOUT 102 // Input (keys, etc) timed out
221#define WLX_DLG_SCREEN_SAVER_TIMEOUT 103 // Screen Saver activated
222#define WLX_DLG_USER_LOGOFF 104 // User logged off
223
224
225
226
227
228////////////////////////////////////////////////////////////////////////
229// //
230// #data types //
231// //
232////////////////////////////////////////////////////////////////////////
233
234
235/////////////////////////////////////////////////////////////////////////
236/////////////////////////////////////////////////////////////////////////
237//
238// The WLX_PROFILE_* structure is returned from a GINA DLL
239// following authentication. This information is used by Winlogon
240// to support supplemental Network Providers and to load the
241// newly logged-on user's profile.
242//
243// Winlogon is responsible for freeing both the profile structure
244// and the fields within the structure that are marked as separately
245// deallocatable.
246//
247
248typedef struct _WLX_PROFILE_V1_0 {
249
250 //
251 // This field identifies the type of profile being returned by a
252 // GINA DLL. Profile types are defined with the prefix
253 // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
254 // structure so the remainder of the structure may be referenced.
255 //
256
257 DWORD dwType;
258
259
260
261 //
262 // pathname of profile to load for user.
263 //
264 // The buffer pointed to by this field must be separately allocated.
265 // Winlogon will free the buffer when it is no longer needed.
266 //
267 //
268 PWSTR pszProfile;
269
270} WLX_PROFILE_V1_0, * PWLX_PROFILE_V1_0;
271
272
273typedef struct _WLX_PROFILE_V2_0 {
274
275 //
276 // This field identifies the type of profile being returned by a
277 // GINA DLL. Profile types are defined with the prefix
278 // WLX_PROFILE_TYPE_xxx. It allows Winlogon to typecast the
279 // structure so the remainder of the structure may be referenced.
280 //
281
282 DWORD dwType;
283
284
285 //
286 // pathname of profile to load for user.
287 //
288 // This parameter can be NULL. If so, the user has a local
289 // profile only.
290 //
291 // The buffer pointed to by this field must be separately allocated.
292 // Winlogon will free the buffer when it is no longer needed.
293 //
294 //
295
296 PWSTR pszProfile;
297
298
299 //
300 // pathname of policy to load for user.
301 //
302 // This parameter can be NULL which prevents network wide policy
303 // from being applied.
304 //
305 // The buffer pointed to by this field must be separately allocated.
306 // Winlogon will free the buffer when it is no longer needed.
307 //
308 //
309
310 PWSTR pszPolicy;
311
312
313 //
314 // pathname of network default user profile
315 //
316 // This parameter can be NULL, which causes the Default User
317 // profile on the local machine to be used.
318 //
319 // The buffer pointed to by this field must be separately allocated.
320 // Winlogon will free the buffer when it is no longer needed.
321 //
322 //
323
324 PWSTR pszNetworkDefaultUserProfile;
325
326
327 //
328 // name of the server which validated the user account
329 //
330 // This is used to enumerate globals groups the user belongs
331 // to for policy support. This parameter can be NULL.
332 //
333 // The buffer pointed to by this field must be separately allocated.
334 // Winlogon will free the buffer when it is no longer needed.
335 //
336 //
337
338 PWSTR pszServerName;
339
340
341 //
342 // pointer to a series of null terminated environment variables
343 //
344 // envname=environment variable value
345 // - or -
346 // envname=%OtherVar%\more text
347 //
348 // Each environment variable is NULL terminated with the last
349 // environment variable double NULL terminated. These variables
350 // are set into the user's initial environment. The environment
351 // variable value can contain other environment variables wrapped
352 // in "%" signs. This parameter can be NULL.
353 //
354 // The buffer pointed to by this field must be separately allocated.
355 // Winlogon will free the buffer when it is no longer needed.
356 //
357 //
358
359 PWSTR pszEnvironment;
360
361} WLX_PROFILE_V2_0, * PWLX_PROFILE_V2_0;
362
363
364
365/////////////////////////////////////////////////////////////////////////
366/////////////////////////////////////////////////////////////////////////
367//
368// The WLX_NPR_NOTIFICATION_INFO structure is returned
369// from a GINA DLL following successful authentication.
370// This information is used by Winlogon to provide
371// identification and authentication information already
372// collected to network providers. Winlogon is
373// responsible for freeing both the main structure and all
374// string and other buffers pointed to from within the
375// structure.
376//
377
378typedef struct _WLX_MPR_NOTIFY_INFO {
379
380 //
381 // The name of the account logged onto (e.g. REDMOND\Joe).
382 // The string pointed to by this field must be separately
383 // allocated and will be separately deallocated by Winlogon.
384 //
385
386 PWSTR pszUserName;
387
388 //
389 // The string pointed to by this field must be separately
390 // allocated and will be separately deallocated by Winlogon.
391 //
392
393 PWSTR pszDomain;
394
395 //
396 // Cleartext password of the user account. If the OldPassword
397 // field is non-null, then this field contains the new password
398 // in a password change operation. The string pointed to by
399 // this field must be separately allocated and will be seperately
400 // deallocated by Winlogon.
401 //
402
403 PWSTR pszPassword;
404
405 //
406 // Cleartext old password of the user account whose password
407 // has just been changed. The Password field contains the new
408 // password. The string pointed to by this field must be
409 // separately allocated and will be separately deallocated by
410 // Winlogon.
411 //
412
413 PWSTR pszOldPassword;
414
415} WLX_MPR_NOTIFY_INFO, * PWLX_MPR_NOTIFY_INFO;
416
417
418
419/////////////////////////////////////////////////////////////////////////
420/////////////////////////////////////////////////////////////////////////
421//
422// WLX_TERMINAL_SERVICES_DATA is used by the GINA during a
423// WlxQueryTerminalServicesData() callback into WinLogon from the
424// WlxLoggedOutSAS() context, after the user name and domain are known.
425// This structure relates to TS user configuration information which is
426// retrieved from the Domain Controller and SAM database. Having WinLogon
427// pass this information means the GINA does not need to do the same
428// off-machines lookups again.
429//
430
431#define WLX_DIRECTORY_LENGTH 256
432
433typedef struct _WLX_TERMINAL_SERVICES_DATA {
434
435 //
436 // TS profile path, overrides the standard profile path.
437 //
438
439 WCHAR ProfilePath[WLX_DIRECTORY_LENGTH + 1];
440
441
442 //
443 // TS home directory, overrides standard home directory.
444 //
445
446 WCHAR HomeDir[WLX_DIRECTORY_LENGTH + 1];
447
448
449 //
450 // TS home directory drive, overrides standard drive.
451 //
452
453 WCHAR HomeDirDrive[4];
454
455} WLX_TERMINAL_SERVICES_DATA, *PWLX_TERMINAL_SERVICES_DATA;
456
457
458
459/////////////////////////////////////////////////////////////////////////
460/////////////////////////////////////////////////////////////////////////
461//
462// The WLX_CLIENT_CREDENTIALS_INFO structure is returned
463// from winlogon from the WlxQueryClientCredentials() call.
464//
465// This allows a network client WinStation to pass client
466// credentials for automatic logon.
467//
468// The MSGINA DLL is responsible for freeing the memory
469// and substrings with LocalFree().
470//
471
472#define WLX_CREDENTIAL_TYPE_V1_0 (1)
473#define WLX_CREDENTIAL_TYPE_V2_0 (2)
474
475typedef struct _WLX_CLIENT_CREDENTIALS_INFO {
476
477 //
478 // This field identifies the type of credentials structure being allocated
479 // by GINA DLL. Credential types are defined with the prefix
480 // WLX_CREDENTIAL_TYPE_xxx. It allows Winlogon to typecast the
481 // structure so the remainder of the structure may be referenced.
482 //
483
484 DWORD dwType;
485
486 PWSTR pszUserName;
487 PWSTR pszDomain;
488 PWSTR pszPassword;
489
490 //
491 // This field forces a prompt for the password. This
492 // is due to an administrator override.
493 //
494 // This allows the distinguishing of autologon
495 // with no password.
496 //
497 BOOL fPromptForPassword;
498
499} WLX_CLIENT_CREDENTIALS_INFO_V1_0, * PWLX_CLIENT_CREDENTIALS_INFO_V1_0;
500
501typedef struct _WLX_CLIENT_CREDENTIALS_INFO_2_0 {
502
503 DWORD dwType;
504 PWSTR pszUserName;
505 PWSTR pszDomain;
506 PWSTR pszPassword;
507 BOOL fPromptForPassword;
508
509 //
510 // This field tells winlogon to disconnect/abort the logon attempt if the
511 // provided password is incorrect, or if it should reprompt (current
512 // behavior)
513 //
514
515 BOOL fDisconnectOnLogonFailure;
516
517} WLX_CLIENT_CREDENTIALS_INFO_V2_0, * PWLX_CLIENT_CREDENTIALS_INFO_V2_0;
518
519
520
521/////////////////////////////////////////////////////////////////////////
522/////////////////////////////////////////////////////////////////////////
523//
524// The WLX_CONSOLESWITCH_CREDENTIALS_INFO structure is returned
525// from gina in response to WlxGetConsoleSwitchCredentials calls.
526
527// This structure is also returned from winlogon in response to
528// to WlxQueryConsoleSwitchCredentials call
529//
530// This is used to implement single session Terminal Server. A remote
531// session winlogon calls WlxGetConsoleSwitchCredentials to get the token
532// and other info of the logged on user from msgina. This info is then passed to
533// the console session winlogon to autologon the user on the console session.
534// The gina on console session calls WlxQueryConsoleSwitchCredentials to get
535// this info from winlogon and logs on the user.
536//
537// The caller is responsible for freeing the memory
538// and substrings with LocalFree().
539//
540
541
542#define WLX_CONSOLESWITCHCREDENTIAL_TYPE_V1_0 (1)
543
544typedef struct _WLX_CONSOLESWITCH_CREDENTIALS_INFO {
545
546 //
547 // This field identifies the type of credentials structure being allocated
548 // Credential types are defined with the prefix
549 // WLX_CONSOLESWITCHCREDENTIAL_TYPE_xxx. It allows Winlogon to typecast the
550 // structure so the remainder of the structure may be referenced.
551 //
552
553 DWORD dwType;
554
555 HANDLE UserToken;
556 LUID LogonId;
557 QUOTA_LIMITS Quotas;
558 PWSTR UserName;
559 PWSTR Domain;
560 LARGE_INTEGER LogonTime;
561 BOOL SmartCardLogon;
562 ULONG ProfileLength;
563
564 //
565 // From MSV1_0_INTERACTIVE_PROFILE
566 //
567 DWORD MessageType;
568 USHORT LogonCount;
569 USHORT BadPasswordCount;
570 LARGE_INTEGER ProfileLogonTime;
571 LARGE_INTEGER LogoffTime;
572 LARGE_INTEGER KickOffTime;
573 LARGE_INTEGER PasswordLastSet;
574 LARGE_INTEGER PasswordCanChange;
575 LARGE_INTEGER PasswordMustChange;
576 PWSTR LogonScript;
577 PWSTR HomeDirectory;
578 PWSTR FullName;
579 PWSTR ProfilePath;
580 PWSTR HomeDirectoryDrive;
581 PWSTR LogonServer;
582 ULONG UserFlags;
583 ULONG PrivateDataLen;
584 PBYTE PrivateData;
585
586} WLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0, * PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0;
587
588
589////////////////////////////////////////////////////////////////////////
590// //
591// Services that replacement GINAs ** MUST ** provide //
592// //
593////////////////////////////////////////////////////////////////////////
594
595BOOL
596WINAPI
597WlxNegotiate(
598 DWORD dwWinlogonVersion,
599 PDWORD pdwDllVersion
600 );
601
602BOOL
603WINAPI
604WlxInitialize(
605 LPWSTR lpWinsta,
606 HANDLE hWlx,
607 PVOID pvReserved,
608 PVOID pWinlogonFunctions,
609 PVOID * pWlxContext
610 );
611
612VOID
613WINAPI
614WlxDisplaySASNotice(
615 PVOID pWlxContext
616 );
617
618
619int
620WINAPI
621WlxLoggedOutSAS(
622 PVOID pWlxContext,
623 DWORD dwSasType,
624 PLUID pAuthenticationId,
625 PSID pLogonSid,
626 PDWORD pdwOptions,
627 PHANDLE phToken,
628 PWLX_MPR_NOTIFY_INFO pNprNotifyInfo,
629 PVOID * pProfile
630 );
631
632BOOL
633WINAPI
634WlxActivateUserShell(
635 PVOID pWlxContext,
636 PWSTR pszDesktopName,
637 PWSTR pszMprLogonScript,
638 PVOID pEnvironment
639 );
640
641int
642WINAPI
643WlxLoggedOnSAS(
644 PVOID pWlxContext,
645 DWORD dwSasType,
646 PVOID pReserved
647 );
648
649VOID
650WINAPI
651WlxDisplayLockedNotice(
652 PVOID pWlxContext
653 );
654
655int
656WINAPI
657WlxWkstaLockedSAS(
658 PVOID pWlxContext,
659 DWORD dwSasType
660 );
661
662BOOL
663WINAPI
664WlxIsLockOk(
665 PVOID pWlxContext
666 );
667
668BOOL
669WINAPI
670WlxIsLogoffOk(
671 PVOID pWlxContext
672 );
673
674VOID
675WINAPI
676WlxLogoff(
677 PVOID pWlxContext
678 );
679
680
681VOID
682WINAPI
683WlxShutdown(
684 PVOID pWlxContext,
685 DWORD ShutdownType
686 );
687
688
689//
690// NEW for version 1.1
691//
692BOOL
693WINAPI
694WlxScreenSaverNotify(
695 PVOID pWlxContext,
696 BOOL * pSecure);
697
698BOOL
699WINAPI
700WlxStartApplication(
701 PVOID pWlxContext,
702 PWSTR pszDesktopName,
703 PVOID pEnvironment,
704 PWSTR pszCmdLine
705 );
706
707//
708// New for 1.3
709//
710
711BOOL
712WINAPI
713WlxNetworkProviderLoad(
714 PVOID pWlxContext,
715 PWLX_MPR_NOTIFY_INFO pNprNotifyInfo
716 );
717
718
719#define STATUSMSG_OPTION_NOANIMATION 0x00000001
720#define STATUSMSG_OPTION_SETFOREGROUND 0x00000002
721
722BOOL
723WINAPI
724WlxDisplayStatusMessage(
725 PVOID pWlxContext,
726 HDESK hDesktop,
727 DWORD dwOptions,
728 PWSTR pTitle,
729 PWSTR pMessage
730 );
731
732BOOL
733WINAPI
734WlxGetStatusMessage(
735 PVOID pWlxContext,
736 DWORD * pdwOptions,
737 PWSTR pMessage,
738 DWORD dwBufferSize
739 );
740
741BOOL
742WINAPI
743WlxRemoveStatusMessage(
744 PVOID pWlxContext
745 );
746
747
748//
749// New for 1.4
750//
751BOOL
752WINAPI
753WlxGetConsoleSwitchCredentials (
754 PVOID pWlxContext,
755 PVOID pCredInfo
756 );
757
758VOID
759WINAPI
760WlxReconnectNotify (
761 PVOID pWlxContext
762 );
763
764VOID
765WINAPI
766WlxDisconnectNotify (
767 PVOID pWlxContext
768 );
769
770
771
772////////////////////////////////////////////////////////////////////////
773// //
774// Services that Winlogon provides //
775// //
776////////////////////////////////////////////////////////////////////////
777
778typedef struct _WLX_DESKTOP {
779 DWORD Size;
780 DWORD Flags;
781 HDESK hDesktop;
782 PWSTR pszDesktopName;
783} WLX_DESKTOP, * PWLX_DESKTOP;
784
785#define WLX_DESKTOP_NAME 0x00000001 // Name present
786#define WLX_DESKTOP_HANDLE 0x00000002 // Handle present
787
788
789
790typedef VOID
791(WINAPI * PWLX_USE_CTRL_ALT_DEL)(
792 HANDLE hWlx
793 );
794
795typedef VOID
796(WINAPI * PWLX_SET_CONTEXT_POINTER)(
797 HANDLE hWlx,
798 PVOID pWlxContext
799 );
800
801typedef VOID
802(WINAPI * PWLX_SAS_NOTIFY)(
803 HANDLE hWlx,
804 DWORD dwSasType
805 );
806
807typedef BOOL
808(WINAPI * PWLX_SET_TIMEOUT)(
809 HANDLE hWlx,
810 DWORD Timeout);
811
812typedef int
813(WINAPI * PWLX_ASSIGN_SHELL_PROTECTION)(
814 HANDLE hWlx,
815 HANDLE hToken,
816 HANDLE hProcess,
817 HANDLE hThread
818 );
819
820typedef int
821(WINAPI * PWLX_MESSAGE_BOX)(
822 HANDLE hWlx,
823 HWND hwndOwner,
824 LPWSTR lpszText,
825 LPWSTR lpszTitle,
826 UINT fuStyle
827 );
828
829typedef int
830(WINAPI * PWLX_DIALOG_BOX)(
831 HANDLE hWlx,
832 HANDLE hInst,
833 LPWSTR lpszTemplate,
834 HWND hwndOwner,
835 DLGPROC dlgprc
836 );
837
838typedef int
839(WINAPI * PWLX_DIALOG_BOX_INDIRECT)(
840 HANDLE hWlx,
841 HANDLE hInst,
842 LPCDLGTEMPLATE hDialogTemplate,
843 HWND hwndOwner,
844 DLGPROC dlgprc
845 );
846
847typedef int
848(WINAPI * PWLX_DIALOG_BOX_PARAM)(
849 HANDLE hWlx,
850 HANDLE hInst,
851 LPWSTR lpszTemplate,
852 HWND hwndOwner,
853 DLGPROC dlgprc,
854 LPARAM dwInitParam
855 );
856
857typedef int
858(WINAPI * PWLX_DIALOG_BOX_INDIRECT_PARAM)(
859 HANDLE hWlx,
860 HANDLE hInst,
861 LPCDLGTEMPLATE hDialogTemplate,
862 HWND hwndOwner,
863 DLGPROC dlgprc,
864 LPARAM dwInitParam
865 );
866
867typedef int
868(WINAPI * PWLX_SWITCH_DESKTOP_TO_USER)(
869 HANDLE hWlx);
870
871typedef int
872(WINAPI * PWLX_SWITCH_DESKTOP_TO_WINLOGON)(
873 HANDLE hWlx);
874
875
876typedef int
877(WINAPI * PWLX_CHANGE_PASSWORD_NOTIFY)(
878 HANDLE hWlx,
879 PWLX_MPR_NOTIFY_INFO pMprInfo,
880 DWORD dwChangeInfo
881 );
882
883typedef BOOL
884(WINAPI * PWLX_GET_SOURCE_DESKTOP)(
885 HANDLE hWlx,
886 PWLX_DESKTOP * ppDesktop);
887
888typedef BOOL
889(WINAPI * PWLX_SET_RETURN_DESKTOP)(
890 HANDLE hWlx,
891 PWLX_DESKTOP pDesktop);
892
893typedef BOOL
894(WINAPI * PWLX_CREATE_USER_DESKTOP)(
895 HANDLE hWlx,
896 HANDLE hToken,
897 DWORD Flags,
898 PWSTR pszDesktopName,
899 PWLX_DESKTOP * ppDesktop);
900
901#define WLX_CREATE_INSTANCE_ONLY 0x00000001
902#define WLX_CREATE_USER 0x00000002
903
904typedef int
905(WINAPI * PWLX_CHANGE_PASSWORD_NOTIFY_EX)(
906 HANDLE hWlx,
907 PWLX_MPR_NOTIFY_INFO pMprInfo,
908 DWORD dwChangeInfo,
909 PWSTR ProviderName,
910 PVOID Reserved);
911
912typedef BOOL
913(WINAPI * PWLX_CLOSE_USER_DESKTOP)(
914 HANDLE hWlx,
915 PWLX_DESKTOP pDesktop,
916 HANDLE hToken );
917
918typedef BOOL
919(WINAPI * PWLX_SET_OPTION)(
920 HANDLE hWlx,
921 DWORD Option,
922 ULONG_PTR Value,
923 ULONG_PTR * OldValue
924 );
925
926typedef BOOL
927(WINAPI * PWLX_GET_OPTION)(
928 HANDLE hWlx,
929 DWORD Option,
930 ULONG_PTR * Value
931 );
932
933
934typedef VOID
935(WINAPI * PWLX_WIN31_MIGRATE)(
936 HANDLE hWlx
937 );
938
939typedef BOOL
940(WINAPI * PWLX_QUERY_CLIENT_CREDENTIALS)(
941 PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
942 );
943
944typedef BOOL
945(WINAPI * PWLX_QUERY_IC_CREDENTIALS)(
946 PWLX_CLIENT_CREDENTIALS_INFO_V1_0 pCred
947 );
948
949typedef BOOL
950(WINAPI * PWLX_QUERY_TS_LOGON_CREDENTIALS)(
951 PWLX_CLIENT_CREDENTIALS_INFO_V2_0 pCred
952 );
953
954typedef BOOL
955(WINAPI * PWLX_DISCONNECT)(
956 );
957
958typedef DWORD
959(WINAPI * PWLX_QUERY_TERMINAL_SERVICES_DATA)(
960 HANDLE hWlx,
961 PWLX_TERMINAL_SERVICES_DATA pTSData,
962 WCHAR * UserName,
963 WCHAR * Domain
964 );
965
966typedef DWORD
967(WINAPI * PWLX_QUERY_CONSOLESWITCH_CREDENTIALS)(
968 PWLX_CONSOLESWITCH_CREDENTIALS_INFO_V1_0 pCred
969 );
970
971
972//
973// Options that can be get or set:
974//
975
976#define WLX_OPTION_USE_CTRL_ALT_DEL 0x00000001
977#define WLX_OPTION_CONTEXT_POINTER 0x00000002
978#define WLX_OPTION_USE_SMART_CARD 0x00000003
979#define WLX_OPTION_FORCE_LOGOFF_TIME 0x00000004
980#define WLX_OPTION_IGNORE_AUTO_LOGON 0x00000008
981#define WLX_OPTION_NO_SWITCH_ON_SAS 0x00000009
982
983//
984// Options that can be queried only:
985//
986
987#define WLX_OPTION_SMART_CARD_PRESENT 0x00010001
988#define WLX_OPTION_SMART_CARD_INFO 0x00010002
989#define WLX_OPTION_DISPATCH_TABLE_SIZE 0x00010003
990
991
992
993////////////////////////////////////////////////////////////////////////
994// //
995// Function dispatch tables. //
996// One of the following tables will be passed to the GINA DLL //
997// in the WlxInitialize() call during initialization. //
998// //
999////////////////////////////////////////////////////////////////////////
1000
1001typedef struct _WLX_DISPATCH_VERSION_1_0 {
1002 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
1003 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
1004 PWLX_SAS_NOTIFY WlxSasNotify;
1005 PWLX_SET_TIMEOUT WlxSetTimeout;
1006 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
1007 PWLX_MESSAGE_BOX WlxMessageBox;
1008 PWLX_DIALOG_BOX WlxDialogBox;
1009 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
1010 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
1011 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
1012 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
1013 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
1014 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
1015} WLX_DISPATCH_VERSION_1_0, *PWLX_DISPATCH_VERSION_1_0;
1016
1017typedef struct _WLX_DISPATCH_VERSION_1_1 {
1018 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
1019 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
1020 PWLX_SAS_NOTIFY WlxSasNotify;
1021 PWLX_SET_TIMEOUT WlxSetTimeout;
1022 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
1023 PWLX_MESSAGE_BOX WlxMessageBox;
1024 PWLX_DIALOG_BOX WlxDialogBox;
1025 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
1026 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
1027 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
1028 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
1029 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
1030 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
1031 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
1032 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
1033 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
1034 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
1035} WLX_DISPATCH_VERSION_1_1, * PWLX_DISPATCH_VERSION_1_1;
1036
1037typedef struct _WLX_DISPATCH_VERSION_1_2 {
1038 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
1039 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
1040 PWLX_SAS_NOTIFY WlxSasNotify;
1041 PWLX_SET_TIMEOUT WlxSetTimeout;
1042 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
1043 PWLX_MESSAGE_BOX WlxMessageBox;
1044 PWLX_DIALOG_BOX WlxDialogBox;
1045 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
1046 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
1047 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
1048 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
1049 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
1050 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
1051 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
1052 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
1053 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
1054 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
1055 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
1056} WLX_DISPATCH_VERSION_1_2, * PWLX_DISPATCH_VERSION_1_2;
1057
1058typedef struct _WLX_DISPATCH_VERSION_1_3 {
1059 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
1060 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
1061 PWLX_SAS_NOTIFY WlxSasNotify;
1062 PWLX_SET_TIMEOUT WlxSetTimeout;
1063 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
1064 PWLX_MESSAGE_BOX WlxMessageBox;
1065 PWLX_DIALOG_BOX WlxDialogBox;
1066 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
1067 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
1068 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
1069 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
1070 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
1071 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
1072 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
1073 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
1074 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
1075 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
1076 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
1077 PWLX_SET_OPTION WlxSetOption;
1078 PWLX_GET_OPTION WlxGetOption;
1079 PWLX_WIN31_MIGRATE WlxWin31Migrate;
1080 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
1081 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
1082 PWLX_DISCONNECT WlxDisconnect;
1083 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
1084} WLX_DISPATCH_VERSION_1_3, * PWLX_DISPATCH_VERSION_1_3;
1085
1086typedef struct _WLX_DISPATCH_VERSION_1_4 {
1087 PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
1088 PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
1089 PWLX_SAS_NOTIFY WlxSasNotify;
1090 PWLX_SET_TIMEOUT WlxSetTimeout;
1091 PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
1092 PWLX_MESSAGE_BOX WlxMessageBox;
1093 PWLX_DIALOG_BOX WlxDialogBox;
1094 PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
1095 PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
1096 PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
1097 PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
1098 PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
1099 PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
1100 PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
1101 PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
1102 PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
1103 PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
1104 PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop ;
1105 PWLX_SET_OPTION WlxSetOption;
1106 PWLX_GET_OPTION WlxGetOption;
1107 PWLX_WIN31_MIGRATE WlxWin31Migrate;
1108 PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
1109 PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
1110 PWLX_DISCONNECT WlxDisconnect;
1111 PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
1112 PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials;
1113 PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials;
1114} WLX_DISPATCH_VERSION_1_4, * PWLX_DISPATCH_VERSION_1_4;
1115
1116
1117//
1118// Non-GINA notification DLLs
1119//
1120
1121typedef DWORD (*PFNMSGECALLBACK)(BOOL bVerbose, LPWSTR lpMessage);
1122
1123typedef struct _WLX_NOTIFICATION_INFO {
1124 ULONG Size ;
1125 ULONG Flags ;
1126 PWSTR UserName ;
1127 PWSTR Domain ;
1128 PWSTR WindowStation ;
1129 HANDLE hToken ;
1130 HDESK hDesktop ;
1131 PFNMSGECALLBACK pStatusCallback ;
1132} WLX_NOTIFICATION_INFO, * PWLX_NOTIFICATION_INFO ;
1133
1134
1135
1136#endif /* _WINWLX_ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette