4 * Windows NT Filesystem Driver Developer Kit
6 * This file is part of the ReactOS DDK package.
10 * Timo Kreuzer (timo.kreuzer@reactos.org)
12 * THIS SOFTWARE IS NOT COPYRIGHTED
14 * This source code is offered for use in the public domain. You may
15 * use, modify or distribute it freely.
17 * This code is distributed in the hope that it will be useful but
18 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
19 * DISCLAIMED. This includes but is not limited to warranties of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
26 #define _NTIFS_INCLUDED_
45 #define FlagOn(_F,_SF) ((_F) & (_SF))
49 #define BooleanFlagOn(F,SF) ((BOOLEAN)(((F) & (SF)) != 0))
53 #define SetFlag(_F,_SF) ((_F) |= (_SF))
57 #define ClearFlag(_F,_SF) ((_F) &= ~(_SF))
60 typedef UNICODE_STRING LSA_UNICODE_STRING
, *PLSA_UNICODE_STRING
;
61 typedef STRING LSA_STRING
, *PLSA_STRING
;
62 typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES
, *PLSA_OBJECT_ATTRIBUTES
;
68 typedef enum _OBJECT_INFORMATION_CLASS
{
69 ObjectBasicInformation
= 0,
70 ObjectNameInformation
= 1, /* FIXME, not in WDK */
71 ObjectTypeInformation
= 2,
72 ObjectTypesInformation
= 3, /* FIXME, not in WDK */
73 ObjectHandleFlagInformation
= 4, /* FIXME, not in WDK */
74 ObjectSessionInformation
= 5, /* FIXME, not in WDK */
75 MaxObjectInfoClass
/* FIXME, not in WDK */
76 } OBJECT_INFORMATION_CLASS
;
82 IN HANDLE Handle OPTIONAL
,
83 IN OBJECT_INFORMATION_CLASS ObjectInformationClass
,
84 OUT PVOID ObjectInformation OPTIONAL
,
85 IN ULONG ObjectInformationLength
,
86 OUT PULONG ReturnLength OPTIONAL
);
88 #if (NTDDI_VERSION >= NTDDI_WIN2K)
94 IN HANDLE ThreadHandle
,
95 IN ACCESS_MASK DesiredAccess
,
96 IN BOOLEAN OpenAsSelf
,
97 OUT PHANDLE TokenHandle
);
103 IN HANDLE ProcessHandle
,
104 IN ACCESS_MASK DesiredAccess
,
105 OUT PHANDLE TokenHandle
);
110 NtQueryInformationToken(
111 IN HANDLE TokenHandle
,
112 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
113 OUT PVOID TokenInformation OPTIONAL
,
114 IN ULONG TokenInformationLength
,
115 OUT PULONG ReturnLength
);
120 NtAdjustPrivilegesToken(
121 IN HANDLE TokenHandle
,
122 IN BOOLEAN DisableAllPrivileges
,
123 IN PTOKEN_PRIVILEGES NewState OPTIONAL
,
124 IN ULONG BufferLength
,
125 OUT PTOKEN_PRIVILEGES PreviousState
,
126 OUT PULONG ReturnLength OPTIONAL
);
132 OUT PHANDLE FileHandle
,
133 IN ACCESS_MASK DesiredAccess
,
134 IN POBJECT_ATTRIBUTES ObjectAttributes
,
135 OUT PIO_STATUS_BLOCK IoStatusBlock
,
136 IN PLARGE_INTEGER AllocationSize OPTIONAL
,
137 IN ULONG FileAttributes
,
138 IN ULONG ShareAccess
,
139 IN ULONG CreateDisposition
,
140 IN ULONG CreateOptions
,
147 NtDeviceIoControlFile(
148 IN HANDLE FileHandle
,
149 IN HANDLE Event OPTIONAL
,
150 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
151 IN PVOID ApcContext OPTIONAL
,
152 OUT PIO_STATUS_BLOCK IoStatusBlock
,
153 IN ULONG IoControlCode
,
154 IN PVOID InputBuffer OPTIONAL
,
155 IN ULONG InputBufferLength
,
156 OUT PVOID OutputBuffer OPTIONAL
,
157 IN ULONG OutputBufferLength
);
163 IN HANDLE FileHandle
,
164 IN HANDLE Event OPTIONAL
,
165 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
166 IN PVOID ApcContext OPTIONAL
,
167 OUT PIO_STATUS_BLOCK IoStatusBlock
,
168 IN ULONG FsControlCode
,
169 IN PVOID InputBuffer OPTIONAL
,
170 IN ULONG InputBufferLength
,
171 OUT PVOID OutputBuffer OPTIONAL
,
172 IN ULONG OutputBufferLength
);
178 IN HANDLE FileHandle
,
179 IN HANDLE Event OPTIONAL
,
180 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
181 IN PVOID ApcContext OPTIONAL
,
182 OUT PIO_STATUS_BLOCK IoStatusBlock
,
183 IN PLARGE_INTEGER ByteOffset
,
184 IN PLARGE_INTEGER Length
,
186 IN BOOLEAN FailImmediately
,
187 IN BOOLEAN ExclusiveLock
);
193 OUT PHANDLE FileHandle
,
194 IN ACCESS_MASK DesiredAccess
,
195 IN POBJECT_ATTRIBUTES ObjectAttributes
,
196 OUT PIO_STATUS_BLOCK IoStatusBlock
,
197 IN ULONG ShareAccess
,
198 IN ULONG OpenOptions
);
203 NtQueryDirectoryFile(
204 IN HANDLE FileHandle
,
205 IN HANDLE Event OPTIONAL
,
206 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
207 IN PVOID ApcContext OPTIONAL
,
208 OUT PIO_STATUS_BLOCK IoStatusBlock
,
209 OUT PVOID FileInformation
,
211 IN FILE_INFORMATION_CLASS FileInformationClass
,
212 IN BOOLEAN ReturnSingleEntry
,
213 IN PUNICODE_STRING FileName OPTIONAL
,
214 IN BOOLEAN RestartScan
);
219 NtQueryInformationFile(
220 IN HANDLE FileHandle
,
221 OUT PIO_STATUS_BLOCK IoStatusBlock
,
222 OUT PVOID FileInformation
,
224 IN FILE_INFORMATION_CLASS FileInformationClass
);
229 NtQueryQuotaInformationFile(
230 IN HANDLE FileHandle
,
231 OUT PIO_STATUS_BLOCK IoStatusBlock
,
234 IN BOOLEAN ReturnSingleEntry
,
236 IN ULONG SidListLength
,
237 IN PSID StartSid OPTIONAL
,
238 IN BOOLEAN RestartScan
);
243 NtQueryVolumeInformationFile(
244 IN HANDLE FileHandle
,
245 OUT PIO_STATUS_BLOCK IoStatusBlock
,
246 OUT PVOID FsInformation
,
248 IN FS_INFORMATION_CLASS FsInformationClass
);
254 IN HANDLE FileHandle
,
255 IN HANDLE Event OPTIONAL
,
256 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
257 IN PVOID ApcContext OPTIONAL
,
258 OUT PIO_STATUS_BLOCK IoStatusBlock
,
261 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
262 IN PULONG Key OPTIONAL
);
267 NtSetInformationFile(
268 IN HANDLE FileHandle
,
269 OUT PIO_STATUS_BLOCK IoStatusBlock
,
270 IN PVOID FileInformation
,
272 IN FILE_INFORMATION_CLASS FileInformationClass
);
277 NtSetQuotaInformationFile(
278 IN HANDLE FileHandle
,
279 OUT PIO_STATUS_BLOCK IoStatusBlock
,
286 NtSetVolumeInformationFile(
287 IN HANDLE FileHandle
,
288 OUT PIO_STATUS_BLOCK IoStatusBlock
,
289 IN PVOID FsInformation
,
291 IN FS_INFORMATION_CLASS FsInformationClass
);
297 IN HANDLE FileHandle
,
298 IN HANDLE Event OPTIONAL
,
299 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL
,
300 IN PVOID ApcContext OPTIONAL
,
301 OUT PIO_STATUS_BLOCK IoStatusBlock
,
304 IN PLARGE_INTEGER ByteOffset OPTIONAL
,
305 IN PULONG Key OPTIONAL
);
311 IN HANDLE FileHandle
,
312 OUT PIO_STATUS_BLOCK IoStatusBlock
,
313 IN PLARGE_INTEGER ByteOffset
,
314 IN PLARGE_INTEGER Length
,
322 IN SECURITY_INFORMATION SecurityInformation
,
323 IN PSECURITY_DESCRIPTOR SecurityDescriptor
);
328 NtQuerySecurityObject(
330 IN SECURITY_INFORMATION SecurityInformation
,
331 OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
333 OUT PULONG LengthNeeded
);
344 NtAllocateVirtualMemory(
345 IN HANDLE ProcessHandle
,
346 IN OUT PVOID
*BaseAddress
,
347 IN ULONG_PTR ZeroBits
,
348 IN OUT PSIZE_T RegionSize
,
349 IN ULONG AllocationType
,
356 IN HANDLE ProcessHandle
,
357 IN OUT PVOID
*BaseAddress
,
358 IN OUT PSIZE_T RegionSize
,
363 #if (NTDDI_VERSION >= NTDDI_WINXP)
369 IN HANDLE ThreadHandle
,
370 IN ACCESS_MASK DesiredAccess
,
371 IN BOOLEAN OpenAsSelf
,
372 IN ULONG HandleAttributes
,
373 OUT PHANDLE TokenHandle
);
378 NtOpenProcessTokenEx(
379 IN HANDLE ProcessHandle
,
380 IN ACCESS_MASK DesiredAccess
,
381 IN ULONG HandleAttributes
,
382 OUT PHANDLE TokenHandle
);
387 NtOpenJobObjectToken(
389 IN ACCESS_MASK DesiredAccess
,
390 OUT PHANDLE TokenHandle
);
396 IN HANDLE ExistingTokenHandle
,
397 IN ACCESS_MASK DesiredAccess
,
398 IN POBJECT_ATTRIBUTES ObjectAttributes
,
399 IN BOOLEAN EffectiveOnly
,
400 IN TOKEN_TYPE TokenType
,
401 OUT PHANDLE NewTokenHandle
);
407 IN HANDLE ExistingTokenHandle
,
409 IN PTOKEN_GROUPS SidsToDisable OPTIONAL
,
410 IN PTOKEN_PRIVILEGES PrivilegesToDelete OPTIONAL
,
411 IN PTOKEN_GROUPS RestrictedSids OPTIONAL
,
412 OUT PHANDLE NewTokenHandle
);
417 NtImpersonateAnonymousToken(
418 IN HANDLE ThreadHandle
);
423 NtSetInformationToken(
424 IN HANDLE TokenHandle
,
425 IN TOKEN_INFORMATION_CLASS TokenInformationClass
,
426 IN PVOID TokenInformation
,
427 IN ULONG TokenInformationLength
);
433 IN HANDLE TokenHandle
,
434 IN BOOLEAN ResetToDefault
,
435 IN PTOKEN_GROUPS NewState OPTIONAL
,
436 IN ULONG BufferLength OPTIONAL
,
437 OUT PTOKEN_GROUPS PreviousState
,
438 OUT PULONG ReturnLength
);
444 IN HANDLE ClientToken
,
445 IN OUT PPRIVILEGE_SET RequiredPrivileges
,
446 OUT PBOOLEAN Result
);
451 NtAccessCheckAndAuditAlarm(
452 IN PUNICODE_STRING SubsystemName
,
453 IN PVOID HandleId OPTIONAL
,
454 IN PUNICODE_STRING ObjectTypeName
,
455 IN PUNICODE_STRING ObjectName
,
456 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
457 IN ACCESS_MASK DesiredAccess
,
458 IN PGENERIC_MAPPING GenericMapping
,
459 IN BOOLEAN ObjectCreation
,
460 OUT PACCESS_MASK GrantedAccess
,
461 OUT PNTSTATUS AccessStatus
,
462 OUT PBOOLEAN GenerateOnClose
);
467 NtAccessCheckByTypeAndAuditAlarm(
468 IN PUNICODE_STRING SubsystemName
,
470 IN PUNICODE_STRING ObjectTypeName
,
471 IN PUNICODE_STRING ObjectName
,
472 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
473 IN PSID PrincipalSelfSid OPTIONAL
,
474 IN ACCESS_MASK DesiredAccess
,
475 IN AUDIT_EVENT_TYPE AuditType
,
477 IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL
,
478 IN ULONG ObjectTypeLength
,
479 IN PGENERIC_MAPPING GenericMapping
,
480 IN BOOLEAN ObjectCreation
,
481 OUT PACCESS_MASK GrantedAccess
,
482 OUT PNTSTATUS AccessStatus
,
483 OUT PBOOLEAN GenerateOnClose
);
488 NtAccessCheckByTypeResultListAndAuditAlarm(
489 IN PUNICODE_STRING SubsystemName
,
490 IN PVOID HandleId OPTIONAL
,
491 IN PUNICODE_STRING ObjectTypeName
,
492 IN PUNICODE_STRING ObjectName
,
493 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
494 IN PSID PrincipalSelfSid OPTIONAL
,
495 IN ACCESS_MASK DesiredAccess
,
496 IN AUDIT_EVENT_TYPE AuditType
,
498 IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL
,
499 IN ULONG ObjectTypeLength
,
500 IN PGENERIC_MAPPING GenericMapping
,
501 IN BOOLEAN ObjectCreation
,
502 OUT PACCESS_MASK GrantedAccess
,
503 OUT PNTSTATUS AccessStatus
,
504 OUT PBOOLEAN GenerateOnClose
);
508 NtAccessCheckByTypeResultListAndAuditAlarmByHandle(
509 IN PUNICODE_STRING SubsystemName
,
510 IN PVOID HandleId OPTIONAL
,
511 IN HANDLE ClientToken
,
512 IN PUNICODE_STRING ObjectTypeName
,
513 IN PUNICODE_STRING ObjectName
,
514 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
515 IN PSID PrincipalSelfSid OPTIONAL
,
516 IN ACCESS_MASK DesiredAccess
,
517 IN AUDIT_EVENT_TYPE AuditType
,
519 IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL
,
520 IN ULONG ObjectTypeLength
,
521 IN PGENERIC_MAPPING GenericMapping
,
522 IN BOOLEAN ObjectCreation
,
523 OUT PACCESS_MASK GrantedAccess
,
524 OUT PNTSTATUS AccessStatus
,
525 OUT PBOOLEAN GenerateOnClose
);
530 NtOpenObjectAuditAlarm(
531 IN PUNICODE_STRING SubsystemName
,
532 IN PVOID HandleId OPTIONAL
,
533 IN PUNICODE_STRING ObjectTypeName
,
534 IN PUNICODE_STRING ObjectName
,
535 IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL
,
536 IN HANDLE ClientToken
,
537 IN ACCESS_MASK DesiredAccess
,
538 IN ACCESS_MASK GrantedAccess
,
539 IN PPRIVILEGE_SET Privileges OPTIONAL
,
540 IN BOOLEAN ObjectCreation
,
541 IN BOOLEAN AccessGranted
,
542 OUT PBOOLEAN GenerateOnClose
);
547 NtPrivilegeObjectAuditAlarm(
548 IN PUNICODE_STRING SubsystemName
,
549 IN PVOID HandleId OPTIONAL
,
550 IN HANDLE ClientToken
,
551 IN ACCESS_MASK DesiredAccess
,
552 IN PPRIVILEGE_SET Privileges
,
553 IN BOOLEAN AccessGranted
);
558 NtCloseObjectAuditAlarm(
559 IN PUNICODE_STRING SubsystemName
,
560 IN PVOID HandleId OPTIONAL
,
561 IN BOOLEAN GenerateOnClose
);
566 NtDeleteObjectAuditAlarm(
567 IN PUNICODE_STRING SubsystemName
,
568 IN PVOID HandleId OPTIONAL
,
569 IN BOOLEAN GenerateOnClose
);
574 NtPrivilegedServiceAuditAlarm(
575 IN PUNICODE_STRING SubsystemName
,
576 IN PUNICODE_STRING ServiceName
,
577 IN HANDLE ClientToken
,
578 IN PPRIVILEGE_SET Privileges
,
579 IN BOOLEAN AccessGranted
);
584 NtSetInformationThread(
585 IN HANDLE ThreadHandle
,
586 IN THREADINFOCLASS ThreadInformationClass
,
587 IN PVOID ThreadInformation
,
588 IN ULONG ThreadInformationLength
);
594 OUT PHANDLE SectionHandle
,
595 IN ACCESS_MASK DesiredAccess
,
596 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
597 IN PLARGE_INTEGER MaximumSize OPTIONAL
,
598 IN ULONG SectionPageProtection
,
599 IN ULONG AllocationAttributes
,
600 IN HANDLE FileHandle OPTIONAL
);
604 #define COMPRESSION_FORMAT_NONE (0x0000)
605 #define COMPRESSION_FORMAT_DEFAULT (0x0001)
606 #define COMPRESSION_FORMAT_LZNT1 (0x0002)
607 #define COMPRESSION_ENGINE_STANDARD (0x0000)
608 #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
609 #define COMPRESSION_ENGINE_HIBER (0x0200)
611 #define MAX_UNICODE_STACK_BUFFER_LENGTH 256
613 #define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3))
615 #define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT
616 #define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT
618 typedef ULONG LSA_OPERATIONAL_MODE
, *PLSA_OPERATIONAL_MODE
;
620 typedef enum _SECURITY_LOGON_TYPE
{
621 UndefinedLogonType
= 0,
630 #if (_WIN32_WINNT >= 0x0501)
634 #if (_WIN32_WINNT >= 0x0502)
635 CachedRemoteInteractive
,
638 } SECURITY_LOGON_TYPE
, *PSECURITY_LOGON_TYPE
;
640 #ifndef _NTLSA_AUDIT_
641 #define _NTLSA_AUDIT_
647 #endif /* _NTLSA_AUDIT_ */
651 LsaRegisterLogonProcess(
652 IN PLSA_STRING LogonProcessName
,
653 OUT PHANDLE LsaHandle
,
654 OUT PLSA_OPERATIONAL_MODE SecurityMode
);
660 IN PLSA_STRING OriginName
,
661 IN SECURITY_LOGON_TYPE LogonType
,
662 IN ULONG AuthenticationPackage
,
663 IN PVOID AuthenticationInformation
,
664 IN ULONG AuthenticationInformationLength
,
665 IN PTOKEN_GROUPS LocalGroups OPTIONAL
,
666 IN PTOKEN_SOURCE SourceContext
,
667 OUT PVOID
*ProfileBuffer
,
668 OUT PULONG ProfileBufferLength
,
671 OUT PQUOTA_LIMITS Quotas
,
672 OUT PNTSTATUS SubStatus
);
683 #define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
684 #define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
685 #define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW) - sizeof(WCHAR)
687 #define MSV1_0_SUBAUTHENTICATION_KEY "SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
688 #define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
690 #define MSV1_0_CHALLENGE_LENGTH 8
691 #define MSV1_0_USER_SESSION_KEY_LENGTH 16
692 #define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
694 #define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 0x02
695 #define MSV1_0_UPDATE_LOGON_STATISTICS 0x04
696 #define MSV1_0_RETURN_USER_PARAMETERS 0x08
697 #define MSV1_0_DONT_TRY_GUEST_ACCOUNT 0x10
698 #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x20
699 #define MSV1_0_RETURN_PASSWORD_EXPIRY 0x40
700 #define MSV1_0_USE_CLIENT_CHALLENGE 0x80
701 #define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 0x100
702 #define MSV1_0_RETURN_PROFILE_PATH 0x200
703 #define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 0x400
704 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x800
706 #define MSV1_0_DISABLE_PERSONAL_FALLBACK 0x00001000
707 #define MSV1_0_ALLOW_FORCE_GUEST 0x00002000
709 #if (_WIN32_WINNT >= 0x0502)
710 #define MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED 0x00004000
711 #define MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY 0x00008000
714 #define MSV1_0_SUBAUTHENTICATION_DLL_EX 0x00100000
715 #define MSV1_0_ALLOW_MSVCHAPV2 0x00010000
717 #if (_WIN32_WINNT >= 0x0600)
718 #define MSV1_0_S4U2SELF 0x00020000
719 #define MSV1_0_CHECK_LOGONHOURS_FOR_S4U 0x00040000
722 #define MSV1_0_SUBAUTHENTICATION_DLL 0xFF000000
723 #define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
724 #define MSV1_0_MNS_LOGON 0x01000000
726 #define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2
727 #define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132
729 #define LOGON_GUEST 0x01
730 #define LOGON_NOENCRYPTION 0x02
731 #define LOGON_CACHED_ACCOUNT 0x04
732 #define LOGON_USED_LM_PASSWORD 0x08
733 #define LOGON_EXTRA_SIDS 0x20
734 #define LOGON_SUBAUTH_SESSION_KEY 0x40
735 #define LOGON_SERVER_TRUST_ACCOUNT 0x80
736 #define LOGON_NTLMV2_ENABLED 0x100
737 #define LOGON_RESOURCE_GROUPS 0x200
738 #define LOGON_PROFILE_PATH_RETURNED 0x400
739 #define LOGON_NT_V2 0x800
740 #define LOGON_LM_V2 0x1000
741 #define LOGON_NTLM_V2 0x2000
743 #if (_WIN32_WINNT >= 0x0600)
745 #define LOGON_OPTIMIZED 0x4000
746 #define LOGON_WINLOGON 0x8000
747 #define LOGON_PKINIT 0x10000
748 #define LOGON_NO_OPTIMIZED 0x20000
752 #define MSV1_0_SUBAUTHENTICATION_FLAGS 0xFF000000
754 #define LOGON_GRACE_LOGON 0x01000000
756 #define MSV1_0_OWF_PASSWORD_LENGTH 16
757 #define MSV1_0_CRED_LM_PRESENT 0x1
758 #define MSV1_0_CRED_NT_PRESENT 0x2
759 #define MSV1_0_CRED_VERSION 0
761 #define MSV1_0_NTLM3_RESPONSE_LENGTH 16
762 #define MSV1_0_NTLM3_OWF_LENGTH 16
764 #if (_WIN32_WINNT == 0x0500)
765 #define MSV1_0_MAX_NTLM3_LIFE 1800
767 #define MSV1_0_MAX_NTLM3_LIFE 129600
769 #define MSV1_0_MAX_AVL_SIZE 64000
771 #if (_WIN32_WINNT >= 0x0501)
773 #define MSV1_0_AV_FLAG_FORCE_GUEST 0x00000001
775 #if (_WIN32_WINNT >= 0x0600)
776 #define MSV1_0_AV_FLAG_MIC_HANDSHAKE_MESSAGES 0x00000002
781 #define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH)
783 #if(_WIN32_WINNT >= 0x0502)
784 #define MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH RTL_SIZEOF_THROUGH_FIELD(MSV1_0_NTLM3_RESPONSE, AvPairsOff)
787 #define USE_PRIMARY_PASSWORD 0x01
788 #define RETURN_PRIMARY_USERNAME 0x02
789 #define RETURN_PRIMARY_LOGON_DOMAINNAME 0x04
790 #define RETURN_NON_NT_USER_SESSION_KEY 0x08
791 #define GENERATE_CLIENT_CHALLENGE 0x10
792 #define GCR_NTLM3_PARMS 0x20
793 #define GCR_TARGET_INFO 0x40
794 #define RETURN_RESERVED_PARAMETER 0x80
795 #define GCR_ALLOW_NTLM 0x100
796 #define GCR_USE_OEM_SET 0x200
797 #define GCR_MACHINE_CREDENTIAL 0x400
798 #define GCR_USE_OWF_PASSWORD 0x800
799 #define GCR_ALLOW_LM 0x1000
800 #define GCR_ALLOW_NO_TARGET 0x2000
802 typedef enum _MSV1_0_LOGON_SUBMIT_TYPE
{
803 MsV1_0InteractiveLogon
= 2,
807 MsV1_0WorkstationUnlockLogon
= 7,
809 MsV1_0VirtualLogon
= 82
810 } MSV1_0_LOGON_SUBMIT_TYPE
, *PMSV1_0_LOGON_SUBMIT_TYPE
;
812 typedef enum _MSV1_0_PROFILE_BUFFER_TYPE
{
813 MsV1_0InteractiveProfile
= 2,
814 MsV1_0Lm20LogonProfile
,
815 MsV1_0SmartCardProfile
816 } MSV1_0_PROFILE_BUFFER_TYPE
, *PMSV1_0_PROFILE_BUFFER_TYPE
;
818 typedef struct _MSV1_0_INTERACTIVE_LOGON
{
819 MSV1_0_LOGON_SUBMIT_TYPE MessageType
;
820 UNICODE_STRING LogonDomainName
;
821 UNICODE_STRING UserName
;
822 UNICODE_STRING Password
;
823 } MSV1_0_INTERACTIVE_LOGON
, *PMSV1_0_INTERACTIVE_LOGON
;
825 typedef struct _MSV1_0_INTERACTIVE_PROFILE
{
826 MSV1_0_PROFILE_BUFFER_TYPE MessageType
;
828 USHORT BadPasswordCount
;
829 LARGE_INTEGER LogonTime
;
830 LARGE_INTEGER LogoffTime
;
831 LARGE_INTEGER KickOffTime
;
832 LARGE_INTEGER PasswordLastSet
;
833 LARGE_INTEGER PasswordCanChange
;
834 LARGE_INTEGER PasswordMustChange
;
835 UNICODE_STRING LogonScript
;
836 UNICODE_STRING HomeDirectory
;
837 UNICODE_STRING FullName
;
838 UNICODE_STRING ProfilePath
;
839 UNICODE_STRING HomeDirectoryDrive
;
840 UNICODE_STRING LogonServer
;
842 } MSV1_0_INTERACTIVE_PROFILE
, *PMSV1_0_INTERACTIVE_PROFILE
;
844 typedef struct _MSV1_0_LM20_LOGON
{
845 MSV1_0_LOGON_SUBMIT_TYPE MessageType
;
846 UNICODE_STRING LogonDomainName
;
847 UNICODE_STRING UserName
;
848 UNICODE_STRING Workstation
;
849 UCHAR ChallengeToClient
[MSV1_0_CHALLENGE_LENGTH
];
850 STRING CaseSensitiveChallengeResponse
;
851 STRING CaseInsensitiveChallengeResponse
;
852 ULONG ParameterControl
;
853 } MSV1_0_LM20_LOGON
, * PMSV1_0_LM20_LOGON
;
855 typedef struct _MSV1_0_SUBAUTH_LOGON
{
856 MSV1_0_LOGON_SUBMIT_TYPE MessageType
;
857 UNICODE_STRING LogonDomainName
;
858 UNICODE_STRING UserName
;
859 UNICODE_STRING Workstation
;
860 UCHAR ChallengeToClient
[MSV1_0_CHALLENGE_LENGTH
];
861 STRING AuthenticationInfo1
;
862 STRING AuthenticationInfo2
;
863 ULONG ParameterControl
;
864 ULONG SubAuthPackageId
;
865 } MSV1_0_SUBAUTH_LOGON
, * PMSV1_0_SUBAUTH_LOGON
;
867 #if (_WIN32_WINNT >= 0x0600)
869 #define MSV1_0_S4U_LOGON_FLAG_CHECK_LOGONHOURS 0x2
871 typedef struct _MSV1_0_S4U_LOGON
{
872 MSV1_0_LOGON_SUBMIT_TYPE MessageType
;
874 UNICODE_STRING UserPrincipalName
;
875 UNICODE_STRING DomainName
;
876 } MSV1_0_S4U_LOGON
, *PMSV1_0_S4U_LOGON
;
880 typedef struct _MSV1_0_LM20_LOGON_PROFILE
{
881 MSV1_0_PROFILE_BUFFER_TYPE MessageType
;
882 LARGE_INTEGER KickOffTime
;
883 LARGE_INTEGER LogoffTime
;
885 UCHAR UserSessionKey
[MSV1_0_USER_SESSION_KEY_LENGTH
];
886 UNICODE_STRING LogonDomainName
;
887 UCHAR LanmanSessionKey
[MSV1_0_LANMAN_SESSION_KEY_LENGTH
];
888 UNICODE_STRING LogonServer
;
889 UNICODE_STRING UserParameters
;
890 } MSV1_0_LM20_LOGON_PROFILE
, * PMSV1_0_LM20_LOGON_PROFILE
;
892 typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL
{
895 UCHAR LmPassword
[MSV1_0_OWF_PASSWORD_LENGTH
];
896 UCHAR NtPassword
[MSV1_0_OWF_PASSWORD_LENGTH
];
897 } MSV1_0_SUPPLEMENTAL_CREDENTIAL
, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL
;
899 typedef struct _MSV1_0_NTLM3_RESPONSE
{
900 UCHAR Response
[MSV1_0_NTLM3_RESPONSE_LENGTH
];
906 UCHAR ChallengeFromClient
[MSV1_0_CHALLENGE_LENGTH
];
909 } MSV1_0_NTLM3_RESPONSE
, *PMSV1_0_NTLM3_RESPONSE
;
911 typedef enum _MSV1_0_AVID
{
915 MsvAvDnsComputerName
,
917 #if (_WIN32_WINNT >= 0x0501)
920 #if (_WIN32_WINNT >= 0x0600)
924 MsvAvChannelBindings
,
929 typedef struct _MSV1_0_AV_PAIR
{
932 } MSV1_0_AV_PAIR
, *PMSV1_0_AV_PAIR
;
934 typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE
{
935 MsV1_0Lm20ChallengeRequest
= 0,
936 MsV1_0Lm20GetChallengeResponse
,
937 MsV1_0EnumerateUsers
,
940 MsV1_0ChangePassword
,
941 MsV1_0ChangeCachedPassword
,
942 MsV1_0GenericPassthrough
,
945 MsV1_0DeriveCredential
,
947 #if (_WIN32_WINNT >= 0x0501)
948 MsV1_0SetProcessOption
,
950 #if (_WIN32_WINNT >= 0x0600)
951 MsV1_0ConfigLocalAliases
,
952 MsV1_0ClearCachedCredentials
,
954 } MSV1_0_PROTOCOL_MESSAGE_TYPE
, *PMSV1_0_PROTOCOL_MESSAGE_TYPE
;
956 typedef struct _MSV1_0_LM20_CHALLENGE_REQUEST
{
957 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
958 } MSV1_0_LM20_CHALLENGE_REQUEST
, *PMSV1_0_LM20_CHALLENGE_REQUEST
;
960 typedef struct _MSV1_0_LM20_CHALLENGE_RESPONSE
{
961 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
962 UCHAR ChallengeToClient
[MSV1_0_CHALLENGE_LENGTH
];
963 } MSV1_0_LM20_CHALLENGE_RESPONSE
, *PMSV1_0_LM20_CHALLENGE_RESPONSE
;
965 typedef struct _MSV1_0_GETCHALLENRESP_REQUEST_V1
{
966 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
967 ULONG ParameterControl
;
969 UNICODE_STRING Password
;
970 UCHAR ChallengeToClient
[MSV1_0_CHALLENGE_LENGTH
];
971 } MSV1_0_GETCHALLENRESP_REQUEST_V1
, *PMSV1_0_GETCHALLENRESP_REQUEST_V1
;
973 typedef struct _MSV1_0_GETCHALLENRESP_REQUEST
{
974 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
975 ULONG ParameterControl
;
977 UNICODE_STRING Password
;
978 UCHAR ChallengeToClient
[MSV1_0_CHALLENGE_LENGTH
];
979 UNICODE_STRING UserName
;
980 UNICODE_STRING LogonDomainName
;
981 UNICODE_STRING ServerName
;
982 } MSV1_0_GETCHALLENRESP_REQUEST
, *PMSV1_0_GETCHALLENRESP_REQUEST
;
984 typedef struct _MSV1_0_GETCHALLENRESP_RESPONSE
{
985 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
986 STRING CaseSensitiveChallengeResponse
;
987 STRING CaseInsensitiveChallengeResponse
;
988 UNICODE_STRING UserName
;
989 UNICODE_STRING LogonDomainName
;
990 UCHAR UserSessionKey
[MSV1_0_USER_SESSION_KEY_LENGTH
];
991 UCHAR LanmanSessionKey
[MSV1_0_LANMAN_SESSION_KEY_LENGTH
];
992 } MSV1_0_GETCHALLENRESP_RESPONSE
, *PMSV1_0_GETCHALLENRESP_RESPONSE
;
994 typedef struct _MSV1_0_ENUMUSERS_REQUEST
{
995 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
996 } MSV1_0_ENUMUSERS_REQUEST
, *PMSV1_0_ENUMUSERS_REQUEST
;
998 typedef struct _MSV1_0_ENUMUSERS_RESPONSE
{
999 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
1000 ULONG NumberOfLoggedOnUsers
;
1003 } MSV1_0_ENUMUSERS_RESPONSE
, *PMSV1_0_ENUMUSERS_RESPONSE
;
1005 typedef struct _MSV1_0_GETUSERINFO_REQUEST
{
1006 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
1008 } MSV1_0_GETUSERINFO_REQUEST
, *PMSV1_0_GETUSERINFO_REQUEST
;
1010 typedef struct _MSV1_0_GETUSERINFO_RESPONSE
{
1011 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType
;
1013 UNICODE_STRING UserName
;
1014 UNICODE_STRING LogonDomainName
;
1015 UNICODE_STRING LogonServer
;
1016 SECURITY_LOGON_TYPE LogonType
;
1017 } MSV1_0_GETUSERINFO_RESPONSE
, *PMSV1_0_GETUSERINFO_RESPONSE
;
1019 $
include (iotypes
.h
)
1021 typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION
{
1023 ACCESS_MASK GrantedAccess
;
1027 } PUBLIC_OBJECT_BASIC_INFORMATION
, *PPUBLIC_OBJECT_BASIC_INFORMATION
;
1029 typedef struct _PUBLIC_OBJECT_TYPE_INFORMATION
{
1030 UNICODE_STRING TypeName
;
1031 ULONG Reserved
[22];
1032 } PUBLIC_OBJECT_TYPE_INFORMATION
, *PPUBLIC_OBJECT_TYPE_INFORMATION
;
1034 typedef struct _SECURITY_CLIENT_CONTEXT
{
1035 SECURITY_QUALITY_OF_SERVICE SecurityQos
;
1036 PACCESS_TOKEN ClientToken
;
1037 BOOLEAN DirectlyAccessClientToken
;
1038 BOOLEAN DirectAccessEffectiveOnly
;
1039 BOOLEAN ServerIsRemote
;
1040 TOKEN_CONTROL ClientTokenControl
;
1041 } SECURITY_CLIENT_CONTEXT
, *PSECURITY_CLIENT_CONTEXT
;
1043 #define SYSTEM_PAGE_PRIORITY_BITS 3
1044 #define SYSTEM_PAGE_PRIORITY_LEVELS (1 << SYSTEM_PAGE_PRIORITY_BITS)
1046 typedef struct _KAPC_STATE
{
1047 LIST_ENTRY ApcListHead
[MaximumMode
];
1049 BOOLEAN KernelApcInProgress
;
1050 BOOLEAN KernelApcPending
;
1051 BOOLEAN UserApcPending
;
1052 } KAPC_STATE
, *PKAPC_STATE
, *RESTRICTED_POINTER PRKAPC_STATE
;
1054 #define KAPC_STATE_ACTUAL_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN))
1056 #define ASSERT_QUEUE(Q) ASSERT(((Q)->Header.Type & KOBJECT_TYPE_MASK) == QueueObject);
1058 typedef struct _KQUEUE
{
1059 DISPATCHER_HEADER Header
;
1060 LIST_ENTRY EntryListHead
;
1061 volatile ULONG CurrentCount
;
1063 LIST_ENTRY ThreadListHead
;
1064 } KQUEUE
, *PKQUEUE
, *RESTRICTED_POINTER PRKQUEUE
;
1066 $
include (kefuncs
.h
)
1067 $
include (exfuncs
.h
)
1068 $
include (sefuncs
.h
)
1069 $
include (psfuncs
.h
)
1070 $
include (iofuncs
.h
)
1071 $
include (potypes
.h
)
1072 $
include (pofuncs
.h
)
1073 $
include (mmtypes
.h
)
1074 $
include (mmfuncs
.h
)
1075 $
include (obfuncs
.h
)
1076 $
include (fsrtltypes
.h
)
1077 $
include (fsrtlfuncs
.h
)
1078 $
include (cctypes
.h
)
1079 $
include (ccfuncs
.h
)
1080 $
include (zwfuncs
.h
)
1082 #define INVALID_PROCESSOR_INDEX 0xffffffff
1084 #define EX_PUSH_LOCK ULONG_PTR
1085 #define PEX_PUSH_LOCK PULONG_PTR
1087 /* #if !defined(_X86AMD64_) FIXME : WHAT ?! */
1090 C_ASSERT(sizeof(ERESOURCE
) == 0x68);
1091 C_ASSERT(FIELD_OFFSET(ERESOURCE
,ActiveCount
) == 0x18);
1092 C_ASSERT(FIELD_OFFSET(ERESOURCE
,Flag
) == 0x1a);
1096 C_ASSERT(sizeof(ERESOURCE
) == 0x38);
1097 C_ASSERT(FIELD_OFFSET(ERESOURCE
,ActiveCount
) == 0x0c);
1098 C_ASSERT(FIELD_OFFSET(ERESOURCE
,Flag
) == 0x0e);
1104 #if (NTDDI_VERSION >= NTDDI_WIN2K)
1105 //DECLSPEC_DEPRECATED_DDK
1109 HalGetDmaAlignmentRequirement(
1114 #if defined(_M_IX86) || defined(_M_AMD64)
1115 #define HalGetDmaAlignmentRequirement() 1L
1124 typedef enum _FAST_IO_POSSIBLE
{
1125 FastIoIsNotPossible
= 0,
1127 FastIoIsQuestionable
1130 typedef struct _EOF_WAIT_BLOCK
{
1131 LIST_ENTRY EofWaitLinks
;
1133 } EOF_WAIT_BLOCK
, *PEOF_WAIT_BLOCK
;
1135 typedef struct _FILE_LOCK_INFO
{
1136 LARGE_INTEGER StartingByte
;
1137 LARGE_INTEGER Length
;
1138 BOOLEAN ExclusiveLock
;
1140 PFILE_OBJECT FileObject
;
1142 LARGE_INTEGER EndingByte
;
1143 } FILE_LOCK_INFO
, *PFILE_LOCK_INFO
;
1146 (NTAPI
*PCOMPLETE_LOCK_IRP_ROUTINE
) (
1151 (NTAPI
*PUNLOCK_ROUTINE
) (
1153 IN PFILE_LOCK_INFO FileLockInfo
);
1155 typedef struct _FILE_LOCK
{
1156 PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine
;
1157 PUNLOCK_ROUTINE UnlockRoutine
;
1158 BOOLEAN FastIoIsQuestionable
;
1160 PVOID LockInformation
;
1161 FILE_LOCK_INFO LastReturnedLockInfo
;
1162 PVOID LastReturnedLock
;
1163 LONG
volatile LockRequestsInProgress
;
1164 } FILE_LOCK
, *PFILE_LOCK
;
1166 typedef struct _TUNNEL
{
1168 PRTL_SPLAY_LINKS Cache
;
1169 LIST_ENTRY TimerQueue
;
1173 typedef struct _BASE_MCB
{
1174 ULONG MaximumPairCount
;
1179 } BASE_MCB
, *PBASE_MCB
;
1181 typedef struct _LARGE_MCB
{
1182 PKGUARDED_MUTEX GuardedMutex
;
1184 } LARGE_MCB
, *PLARGE_MCB
;
1186 #define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1
1188 typedef struct _MCB
{
1189 LARGE_MCB DummyFieldThatSizesThisStructureCorrectly
;
1192 typedef PVOID OPLOCK
, *POPLOCK
;
1195 (NTAPI
*POPLOCK_WAIT_COMPLETE_ROUTINE
) (
1200 (NTAPI
*POPLOCK_FS_PREPOST_IRP
) (
1204 #if (NTDDI_VERSION >= NTDDI_VISTASP1)
1205 #define OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 0x00000001
1208 #if (NTDDI_VERSION >= NTDDI_WIN7)
1209 #define OPLOCK_FLAG_OPLOCK_KEY_CHECK_ONLY 0x00000002
1210 #define OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK 0x00000004
1211 #define OPLOCK_FLAG_IGNORE_OPLOCK_KEYS 0x00000008
1212 #define OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 0x00000001
1215 #if (NTDDI_VERSION >= NTDDI_WIN7)
1217 typedef struct _OPLOCK_KEY_ECP_CONTEXT
{
1220 } OPLOCK_KEY_ECP_CONTEXT
, *POPLOCK_KEY_ECP_CONTEXT
;
1222 DEFINE_GUID( GUID_ECP_OPLOCK_KEY
, 0x48850596, 0x3050, 0x4be7, 0x98, 0x63, 0xfe, 0xc3, 0x50, 0xce, 0x8d, 0x7f );
1226 typedef PVOID PNOTIFY_SYNC
;
1229 (NTAPI
*PCHECK_FOR_TRAVERSE_ACCESS
) (
1230 IN PVOID NotifyContext
,
1231 IN PVOID TargetContext OPTIONAL
,
1232 IN PSECURITY_SUBJECT_CONTEXT SubjectContext
);
1235 (NTAPI
*PFILTER_REPORT_CHANGE
) (
1236 IN PVOID NotifyContext
,
1237 IN PVOID FilterContext
);
1239 extern NTKERNELAPI PUSHORT NlsOemLeadByteInfo
;
1240 #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
1242 #ifdef NLS_MB_CODE_PAGE_TAG
1243 #undef NLS_MB_CODE_PAGE_TAG
1245 #define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag
1247 #if (NTDDI_VERSION >= NTDDI_WIN7)
1248 typedef struct _ECP_HEADER ECP_HEADER
, *PECP_HEADER
;
1251 #if (NTDDI_VERSION >= NTDDI_VISTA)
1253 typedef enum _NETWORK_OPEN_LOCATION_QUALIFIER
{
1254 NetworkOpenLocationAny
,
1255 NetworkOpenLocationRemote
,
1256 NetworkOpenLocationLoopback
1257 } NETWORK_OPEN_LOCATION_QUALIFIER
;
1259 typedef enum _NETWORK_OPEN_INTEGRITY_QUALIFIER
{
1260 NetworkOpenIntegrityAny
,
1261 NetworkOpenIntegrityNone
,
1262 NetworkOpenIntegritySigned
,
1263 NetworkOpenIntegrityEncrypted
,
1264 NetworkOpenIntegrityMaximum
1265 } NETWORK_OPEN_INTEGRITY_QUALIFIER
;
1267 #if (NTDDI_VERSION >= NTDDI_WIN7)
1269 #define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_COLLAPSING 0x1
1270 #define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_DURABILITY 0x2
1271 #define NETWORK_OPEN_ECP_IN_FLAG_FORCE_BUFFERED_SYNCHRONOUS_IO_HACK 0x80000000
1273 typedef struct _NETWORK_OPEN_ECP_CONTEXT
{
1278 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1279 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1283 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1284 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1288 } NETWORK_OPEN_ECP_CONTEXT
, *PNETWORK_OPEN_ECP_CONTEXT
;
1290 typedef struct _NETWORK_OPEN_ECP_CONTEXT_V0
{
1295 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1296 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1299 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1300 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1303 } NETWORK_OPEN_ECP_CONTEXT_V0
, *PNETWORK_OPEN_ECP_CONTEXT_V0
;
1305 #elif (NTDDI_VERSION >= NTDDI_VISTA)
1306 typedef struct _NETWORK_OPEN_ECP_CONTEXT
{
1311 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1312 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1315 NETWORK_OPEN_LOCATION_QUALIFIER Location
;
1316 NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity
;
1319 } NETWORK_OPEN_ECP_CONTEXT
, *PNETWORK_OPEN_ECP_CONTEXT
;
1322 DEFINE_GUID(GUID_ECP_NETWORK_OPEN_CONTEXT
, 0xc584edbf, 0x00df, 0x4d28, 0xb8, 0x84, 0x35, 0xba, 0xca, 0x89, 0x11, 0xe8 );
1324 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1327 #if (NTDDI_VERSION >= NTDDI_VISTA)
1329 typedef struct _PREFETCH_OPEN_ECP_CONTEXT
{
1331 } PREFETCH_OPEN_ECP_CONTEXT
, *PPREFETCH_OPEN_ECP_CONTEXT
;
1333 DEFINE_GUID(GUID_ECP_PREFETCH_OPEN
, 0xe1777b21, 0x847e, 0x4837, 0xaa, 0x45, 0x64, 0x16, 0x1d, 0x28, 0x6, 0x55 );
1335 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1337 #if (NTDDI_VERSION >= NTDDI_WIN7)
1339 DEFINE_GUID (GUID_ECP_NFS_OPEN
, 0xf326d30c, 0xe5f8, 0x4fe7, 0xab, 0x74, 0xf5, 0xa3, 0x19, 0x6d, 0x92, 0xdb);
1340 DEFINE_GUID(GUID_ECP_SRV_OPEN
, 0xbebfaebc, 0xaabf, 0x489d, 0x9d, 0x2c, 0xe9, 0xe3, 0x61, 0x10, 0x28, 0x53 );
1342 typedef struct sockaddr_storage
*PSOCKADDR_STORAGE_NFS
;
1344 typedef struct _NFS_OPEN_ECP_CONTEXT
{
1345 PUNICODE_STRING ExportAlias
;
1346 PSOCKADDR_STORAGE_NFS ClientSocketAddress
;
1347 } NFS_OPEN_ECP_CONTEXT
, *PNFS_OPEN_ECP_CONTEXT
, **PPNFS_OPEN_ECP_CONTEXT
;
1349 typedef struct _SRV_OPEN_ECP_CONTEXT
{
1350 PUNICODE_STRING ShareName
;
1351 PSOCKADDR_STORAGE_NFS SocketAddress
;
1352 BOOLEAN OplockBlockState
;
1353 BOOLEAN OplockAppState
;
1354 BOOLEAN OplockFinalState
;
1355 } SRV_OPEN_ECP_CONTEXT
, *PSRV_OPEN_ECP_CONTEXT
;
1357 #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
1359 #define PIN_WAIT (1)
1360 #define PIN_EXCLUSIVE (2)
1361 #define PIN_NO_READ (4)
1362 #define PIN_IF_BCB (8)
1363 #define PIN_CALLER_TRACKS_DIRTY_DATA (32)
1364 #define PIN_HIGH_PRIORITY (64)
1367 #define MAP_NO_READ (16)
1368 #define MAP_HIGH_PRIORITY (64)
1370 #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
1371 #define IOCTL_REDIR_QUERY_PATH_EX CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 100, METHOD_NEITHER, FILE_ANY_ACCESS)
1373 typedef struct _QUERY_PATH_REQUEST
{
1374 ULONG PathNameLength
;
1375 PIO_SECURITY_CONTEXT SecurityContext
;
1376 WCHAR FilePathName
[1];
1377 } QUERY_PATH_REQUEST
, *PQUERY_PATH_REQUEST
;
1379 typedef struct _QUERY_PATH_REQUEST_EX
{
1380 PIO_SECURITY_CONTEXT pSecurityContext
;
1383 UNICODE_STRING PathName
;
1384 UNICODE_STRING DomainServiceName
;
1385 ULONG_PTR Reserved
[ 3 ];
1386 } QUERY_PATH_REQUEST_EX
, *PQUERY_PATH_REQUEST_EX
;
1388 typedef struct _QUERY_PATH_RESPONSE
{
1389 ULONG LengthAccepted
;
1390 } QUERY_PATH_RESPONSE
, *PQUERY_PATH_RESPONSE
;
1392 #define VOLSNAPCONTROLTYPE 0x00000053
1393 #define IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES CTL_CODE(VOLSNAPCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
1395 /* FIXME : These definitions below don't belong here (or anywhere in ddk really) */
1396 #pragma pack(push,4)
1398 #ifndef VER_PRODUCTBUILD
1399 #define VER_PRODUCTBUILD 10000
1404 extern PACL SePublicDefaultDacl
;
1405 extern PACL SeSystemDefaultDacl
;
1407 #define FS_LFN_APIS 0x00004000
1409 #define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */
1410 #define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
1411 #define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
1412 #define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
1413 #define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
1414 #define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
1415 #define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
1416 #define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
1417 #define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
1418 #define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
1419 #define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT
1420 #define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM
1421 #define FILE_STORAGE_TYPE_MASK 0x000f0000
1422 #define FILE_STORAGE_TYPE_SHIFT 16
1424 #define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004
1427 #define HARDWARE_PTE HARDWARE_PTE_X86
1428 #define PHARDWARE_PTE PHARDWARE_PTE_X86
1431 #define IO_ATTACH_DEVICE_API 0x80000000
1433 #define IO_TYPE_APC 18
1434 #define IO_TYPE_DPC 19
1435 #define IO_TYPE_DEVICE_QUEUE 20
1436 #define IO_TYPE_EVENT_PAIR 21
1437 #define IO_TYPE_INTERRUPT 22
1438 #define IO_TYPE_PROFILE 23
1440 #define IRP_BEING_VERIFIED 0x10
1442 #define MAILSLOT_CLASS_FIRSTCLASS 1
1443 #define MAILSLOT_CLASS_SECONDCLASS 2
1445 #define MAILSLOT_SIZE_AUTO 0
1447 #define MEM_DOS_LIM 0x40000000
1449 #define OB_TYPE_TYPE 1
1450 #define OB_TYPE_DIRECTORY 2
1451 #define OB_TYPE_SYMBOLIC_LINK 3
1452 #define OB_TYPE_TOKEN 4
1453 #define OB_TYPE_PROCESS 5
1454 #define OB_TYPE_THREAD 6
1455 #define OB_TYPE_EVENT 7
1456 #define OB_TYPE_EVENT_PAIR 8
1457 #define OB_TYPE_MUTANT 9
1458 #define OB_TYPE_SEMAPHORE 10
1459 #define OB_TYPE_TIMER 11
1460 #define OB_TYPE_PROFILE 12
1461 #define OB_TYPE_WINDOW_STATION 13
1462 #define OB_TYPE_DESKTOP 14
1463 #define OB_TYPE_SECTION 15
1464 #define OB_TYPE_KEY 16
1465 #define OB_TYPE_PORT 17
1466 #define OB_TYPE_ADAPTER 18
1467 #define OB_TYPE_CONTROLLER 19
1468 #define OB_TYPE_DEVICE 20
1469 #define OB_TYPE_DRIVER 21
1470 #define OB_TYPE_IO_COMPLETION 22
1471 #define OB_TYPE_FILE 23
1473 #define SEC_BASED 0x00200000
1477 #define TOKEN_HAS_ADMIN_GROUP 0x08
1479 #if (VER_PRODUCTBUILD >= 1381)
1480 #define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
1481 #endif /* (VER_PRODUCTBUILD >= 1381) */
1483 #if (VER_PRODUCTBUILD >= 2195)
1485 #define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
1486 #define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
1488 #define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
1490 #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
1491 #define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
1492 #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
1493 #define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
1494 #endif /* (VER_PRODUCTBUILD >= 2195) */
1496 #define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
1497 #define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
1498 #define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
1499 #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
1500 #define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
1501 #define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
1502 #define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
1503 #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
1505 typedef enum _FILE_STORAGE_TYPE
{
1506 StorageTypeDefault
= 1,
1507 StorageTypeDirectory
,
1509 StorageTypeJunctionPoint
,
1511 StorageTypeStructuredStorage
,
1512 StorageTypeEmbedding
,
1514 } FILE_STORAGE_TYPE
;
1516 typedef struct _OBJECT_BASIC_INFORMATION
1519 ACCESS_MASK GrantedAccess
;
1522 ULONG PagedPoolCharge
;
1523 ULONG NonPagedPoolCharge
;
1524 ULONG Reserved
[ 3 ];
1527 ULONG SecurityDescriptorSize
;
1528 LARGE_INTEGER CreationTime
;
1529 } OBJECT_BASIC_INFORMATION
, *POBJECT_BASIC_INFORMATION
;
1531 typedef struct _BITMAP_RANGE
{
1534 ULONG FirstDirtyPage
;
1535 ULONG LastDirtyPage
;
1538 } BITMAP_RANGE
, *PBITMAP_RANGE
;
1540 typedef struct _FILE_COPY_ON_WRITE_INFORMATION
{
1541 BOOLEAN ReplaceIfExists
;
1542 HANDLE RootDirectory
;
1543 ULONG FileNameLength
;
1545 } FILE_COPY_ON_WRITE_INFORMATION
, *PFILE_COPY_ON_WRITE_INFORMATION
;
1547 typedef struct _FILE_FULL_DIRECTORY_INFORMATION
{
1548 ULONG NextEntryOffset
;
1550 LARGE_INTEGER CreationTime
;
1551 LARGE_INTEGER LastAccessTime
;
1552 LARGE_INTEGER LastWriteTime
;
1553 LARGE_INTEGER ChangeTime
;
1554 LARGE_INTEGER EndOfFile
;
1555 LARGE_INTEGER AllocationSize
;
1556 ULONG FileAttributes
;
1557 ULONG FileNameLength
;
1559 WCHAR FileName
[ANYSIZE_ARRAY
];
1560 } FILE_FULL_DIRECTORY_INFORMATION
, *PFILE_FULL_DIRECTORY_INFORMATION
;
1562 /* raw internal file lock struct returned from FsRtlGetNextFileLock */
1563 typedef struct _FILE_SHARED_LOCK_ENTRY
{
1566 FILE_LOCK_INFO FileLock
;
1567 } FILE_SHARED_LOCK_ENTRY
, *PFILE_SHARED_LOCK_ENTRY
;
1569 /* raw internal file lock struct returned from FsRtlGetNextFileLock */
1570 typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY
{
1571 LIST_ENTRY ListEntry
;
1574 FILE_LOCK_INFO FileLock
;
1575 } FILE_EXCLUSIVE_LOCK_ENTRY
, *PFILE_EXCLUSIVE_LOCK_ENTRY
;
1577 typedef struct _FILE_MAILSLOT_PEEK_BUFFER
{
1578 ULONG ReadDataAvailable
;
1579 ULONG NumberOfMessages
;
1580 ULONG MessageLength
;
1581 } FILE_MAILSLOT_PEEK_BUFFER
, *PFILE_MAILSLOT_PEEK_BUFFER
;
1583 typedef struct _FILE_OLE_CLASSID_INFORMATION
{
1585 } FILE_OLE_CLASSID_INFORMATION
, *PFILE_OLE_CLASSID_INFORMATION
;
1587 typedef struct _FILE_OLE_ALL_INFORMATION
{
1588 FILE_BASIC_INFORMATION BasicInformation
;
1589 FILE_STANDARD_INFORMATION StandardInformation
;
1590 FILE_INTERNAL_INFORMATION InternalInformation
;
1591 FILE_EA_INFORMATION EaInformation
;
1592 FILE_ACCESS_INFORMATION AccessInformation
;
1593 FILE_POSITION_INFORMATION PositionInformation
;
1594 FILE_MODE_INFORMATION ModeInformation
;
1595 FILE_ALIGNMENT_INFORMATION AlignmentInformation
;
1598 LARGE_INTEGER SecurityChangeTime
;
1599 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
1600 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
1601 FILE_STORAGE_TYPE StorageType
;
1604 ULONG NumberOfStreamReferences
;
1607 BOOLEAN ContentIndexDisable
;
1608 BOOLEAN InheritContentIndexDisable
;
1609 FILE_NAME_INFORMATION NameInformation
;
1610 } FILE_OLE_ALL_INFORMATION
, *PFILE_OLE_ALL_INFORMATION
;
1612 typedef struct _FILE_OLE_DIR_INFORMATION
{
1613 ULONG NextEntryOffset
;
1615 LARGE_INTEGER CreationTime
;
1616 LARGE_INTEGER LastAccessTime
;
1617 LARGE_INTEGER LastWriteTime
;
1618 LARGE_INTEGER ChangeTime
;
1619 LARGE_INTEGER EndOfFile
;
1620 LARGE_INTEGER AllocationSize
;
1621 ULONG FileAttributes
;
1622 ULONG FileNameLength
;
1623 FILE_STORAGE_TYPE StorageType
;
1626 BOOLEAN ContentIndexDisable
;
1627 BOOLEAN InheritContentIndexDisable
;
1629 } FILE_OLE_DIR_INFORMATION
, *PFILE_OLE_DIR_INFORMATION
;
1631 typedef struct _FILE_OLE_INFORMATION
{
1632 LARGE_INTEGER SecurityChangeTime
;
1633 FILE_OLE_CLASSID_INFORMATION OleClassIdInformation
;
1634 FILE_OBJECTID_INFORMATION ObjectIdInformation
;
1635 FILE_STORAGE_TYPE StorageType
;
1637 BOOLEAN ContentIndexDisable
;
1638 BOOLEAN InheritContentIndexDisable
;
1639 } FILE_OLE_INFORMATION
, *PFILE_OLE_INFORMATION
;
1641 typedef struct _FILE_OLE_STATE_BITS_INFORMATION
{
1643 ULONG StateBitsMask
;
1644 } FILE_OLE_STATE_BITS_INFORMATION
, *PFILE_OLE_STATE_BITS_INFORMATION
;
1646 typedef struct _MAPPING_PAIR
{
1649 } MAPPING_PAIR
, *PMAPPING_PAIR
;
1651 typedef struct _GET_RETRIEVAL_DESCRIPTOR
{
1652 ULONG NumberOfPairs
;
1654 MAPPING_PAIR Pair
[1];
1655 } GET_RETRIEVAL_DESCRIPTOR
, *PGET_RETRIEVAL_DESCRIPTOR
;
1657 typedef struct _MBCB
{
1658 CSHORT NodeTypeCode
;
1659 CSHORT NodeIsInZone
;
1663 LIST_ENTRY BitmapRanges
;
1664 LONGLONG ResumeWritePage
;
1665 BITMAP_RANGE BitmapRange1
;
1666 BITMAP_RANGE BitmapRange2
;
1667 BITMAP_RANGE BitmapRange3
;
1670 typedef struct _MOVEFILE_DESCRIPTOR
{
1673 LARGE_INTEGER StartVcn
;
1674 LARGE_INTEGER TargetLcn
;
1677 } MOVEFILE_DESCRIPTOR
, *PMOVEFILE_DESCRIPTOR
;
1679 typedef struct _OBJECT_BASIC_INFO
{
1681 ACCESS_MASK GrantedAccess
;
1683 ULONG ReferenceCount
;
1684 ULONG PagedPoolUsage
;
1685 ULONG NonPagedPoolUsage
;
1687 ULONG NameInformationLength
;
1688 ULONG TypeInformationLength
;
1689 ULONG SecurityDescriptorLength
;
1690 LARGE_INTEGER CreateTime
;
1691 } OBJECT_BASIC_INFO
, *POBJECT_BASIC_INFO
;
1693 typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO
{
1695 BOOLEAN ProtectFromClose
;
1696 } OBJECT_HANDLE_ATTRIBUTE_INFO
, *POBJECT_HANDLE_ATTRIBUTE_INFO
;
1698 typedef struct _OBJECT_NAME_INFO
{
1699 UNICODE_STRING ObjectName
;
1700 WCHAR ObjectNameBuffer
[1];
1701 } OBJECT_NAME_INFO
, *POBJECT_NAME_INFO
;
1703 typedef struct _OBJECT_PROTECTION_INFO
{
1705 BOOLEAN ProtectHandle
;
1706 } OBJECT_PROTECTION_INFO
, *POBJECT_PROTECTION_INFO
;
1708 typedef struct _OBJECT_TYPE_INFO
{
1709 UNICODE_STRING ObjectTypeName
;
1710 UCHAR Unknown
[0x58];
1711 WCHAR ObjectTypeNameBuffer
[1];
1712 } OBJECT_TYPE_INFO
, *POBJECT_TYPE_INFO
;
1714 typedef struct _OBJECT_ALL_TYPES_INFO
{
1715 ULONG NumberOfObjectTypes
;
1716 OBJECT_TYPE_INFO ObjectsTypeInfo
[1];
1717 } OBJECT_ALL_TYPES_INFO
, *POBJECT_ALL_TYPES_INFO
;
1719 #if defined(USE_LPC6432)
1720 #define LPC_CLIENT_ID CLIENT_ID64
1721 #define LPC_SIZE_T ULONGLONG
1722 #define LPC_PVOID ULONGLONG
1723 #define LPC_HANDLE ULONGLONG
1725 #define LPC_CLIENT_ID CLIENT_ID
1726 #define LPC_SIZE_T SIZE_T
1727 #define LPC_PVOID PVOID
1728 #define LPC_HANDLE HANDLE
1731 typedef struct _PORT_MESSAGE
1747 CSHORT DataInfoOffset
;
1751 __GNU_EXTENSION
union
1753 LPC_CLIENT_ID ClientId
;
1754 double DoNotUseThisField
;
1757 __GNU_EXTENSION
union
1759 LPC_SIZE_T ClientViewSize
;
1762 } PORT_MESSAGE
, *PPORT_MESSAGE
;
1764 #define LPC_KERNELMODE_MESSAGE (CSHORT)((USHORT)0x8000)
1766 typedef struct _PORT_VIEW
1769 LPC_HANDLE SectionHandle
;
1770 ULONG SectionOffset
;
1771 LPC_SIZE_T ViewSize
;
1773 LPC_PVOID ViewRemoteBase
;
1774 } PORT_VIEW
, *PPORT_VIEW
;
1776 typedef struct _REMOTE_PORT_VIEW
1779 LPC_SIZE_T ViewSize
;
1781 } REMOTE_PORT_VIEW
, *PREMOTE_PORT_VIEW
;
1783 typedef struct _VAD_HEADER
{
1786 struct _VAD_HEADER
* ParentLink
;
1787 struct _VAD_HEADER
* LeftLink
;
1788 struct _VAD_HEADER
* RightLink
;
1789 ULONG Flags
; /* LSB = CommitCharge */
1791 PVOID FirstProtoPte
;
1795 } VAD_HEADER
, *PVAD_HEADER
;
1800 CcGetLsnForFileObject (
1801 IN PFILE_OBJECT FileObject
,
1802 OUT PLARGE_INTEGER OldestLsn OPTIONAL
1809 IN POOL_TYPE PoolType
,
1810 IN ULONG NumberOfBytes
1816 FsRtlAllocatePoolWithQuota (
1817 IN POOL_TYPE PoolType
,
1818 IN ULONG NumberOfBytes
1824 FsRtlAllocatePoolWithQuotaTag (
1825 IN POOL_TYPE PoolType
,
1826 IN ULONG NumberOfBytes
,
1833 FsRtlAllocatePoolWithTag (
1834 IN POOL_TYPE PoolType
,
1835 IN ULONG NumberOfBytes
,
1842 FsRtlIsFatDbcsLegal (
1843 IN ANSI_STRING DbcsName
,
1844 IN BOOLEAN WildCardsPermissible
,
1845 IN BOOLEAN PathNamePermissible
,
1846 IN BOOLEAN LeadingBackslashPermissible
1852 FsRtlMdlReadComplete (
1853 IN PFILE_OBJECT FileObject
,
1860 FsRtlMdlWriteComplete (
1861 IN PFILE_OBJECT FileObject
,
1862 IN PLARGE_INTEGER FileOffset
,
1869 FsRtlNotifyChangeDirectory (
1870 IN PNOTIFY_SYNC NotifySync
,
1872 IN PSTRING FullDirectoryName
,
1873 IN PLIST_ENTRY NotifyList
,
1874 IN BOOLEAN WatchTree
,
1875 IN ULONG CompletionFilter
,
1883 IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL
,
1884 IN POBJECT_TYPE ObjectType
,
1885 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL
,
1886 IN KPROCESSOR_MODE AccessMode
,
1887 IN OUT PVOID ParseContext OPTIONAL
,
1888 IN ULONG ObjectSize
,
1889 IN ULONG PagedPoolCharge OPTIONAL
,
1890 IN ULONG NonPagedPoolCharge OPTIONAL
,
1897 ObGetObjectPointerCount (
1904 ObReferenceObjectByName (
1905 IN PUNICODE_STRING ObjectName
,
1906 IN ULONG Attributes
,
1907 IN PACCESS_STATE PassedAccessState OPTIONAL
,
1908 IN ACCESS_MASK DesiredAccess OPTIONAL
,
1909 IN POBJECT_TYPE ObjectType
,
1910 IN KPROCESSOR_MODE AccessMode
,
1911 IN OUT PVOID ParseContext OPTIONAL
,
1915 #define PsDereferenceImpersonationToken(T) \
1916 {if (ARGUMENT_PRESENT(T)) { \
1917 (ObDereferenceObject((T))); \
1926 PsLookupProcessThreadByCid (
1928 OUT PEPROCESS
*Process OPTIONAL
,
1929 OUT PETHREAD
*Thread
1935 RtlSetSaclSecurityDescriptor (
1936 IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor
,
1937 IN BOOLEAN SaclPresent
,
1939 IN BOOLEAN SaclDefaulted
1942 #define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports;
1944 #if (VER_PRODUCTBUILD >= 2195)
1949 ZwAdjustPrivilegesToken (
1950 IN HANDLE TokenHandle
,
1951 IN BOOLEAN DisableAllPrivileges
,
1952 IN PTOKEN_PRIVILEGES NewState
,
1953 IN ULONG BufferLength
,
1954 OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL
,
1955 OUT PULONG ReturnLength
1958 #endif /* (VER_PRODUCTBUILD >= 2195) */
1964 IN HANDLE ThreadHandle
1970 ZwAccessCheckAndAuditAlarm (
1971 IN PUNICODE_STRING SubsystemName
,
1973 IN PUNICODE_STRING ObjectTypeName
,
1974 IN PUNICODE_STRING ObjectName
,
1975 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
1976 IN ACCESS_MASK DesiredAccess
,
1977 IN PGENERIC_MAPPING GenericMapping
,
1978 IN BOOLEAN ObjectCreation
,
1979 OUT PACCESS_MASK GrantedAccess
,
1980 OUT PBOOLEAN AccessStatus
,
1981 OUT PBOOLEAN GenerateOnClose
1984 #if (VER_PRODUCTBUILD >= 2195)
1990 IN HANDLE FileHandle
,
1991 OUT PIO_STATUS_BLOCK IoStatusBlock
1994 #endif /* (VER_PRODUCTBUILD >= 2195) */
2000 IN HANDLE EventHandle
2006 ZwCloseObjectAuditAlarm (
2007 IN PUNICODE_STRING SubsystemName
,
2009 IN BOOLEAN GenerateOnClose
2015 ZwCreateSymbolicLinkObject (
2016 OUT PHANDLE SymbolicLinkHandle
,
2017 IN ACCESS_MASK DesiredAccess
,
2018 IN POBJECT_ATTRIBUTES ObjectAttributes
,
2019 IN PUNICODE_STRING TargetName
2025 ZwFlushInstructionCache (
2026 IN HANDLE ProcessHandle
,
2027 IN PVOID BaseAddress OPTIONAL
,
2035 IN HANDLE FileHandle
,
2036 OUT PIO_STATUS_BLOCK IoStatusBlock
2039 #if (VER_PRODUCTBUILD >= 2195)
2044 ZwInitiatePowerAction (
2045 IN POWER_ACTION SystemAction
,
2046 IN SYSTEM_POWER_STATE MinSystemState
,
2048 IN BOOLEAN Asynchronous
2051 #endif /* (VER_PRODUCTBUILD >= 2195) */
2057 IN POBJECT_ATTRIBUTES KeyObjectAttributes
,
2058 IN POBJECT_ATTRIBUTES FileObjectAttributes
2064 ZwOpenProcessToken (
2065 IN HANDLE ProcessHandle
,
2066 IN ACCESS_MASK DesiredAccess
,
2067 OUT PHANDLE TokenHandle
2074 OUT PHANDLE ThreadHandle
,
2075 IN ACCESS_MASK DesiredAccess
,
2076 IN POBJECT_ATTRIBUTES ObjectAttributes
,
2077 IN PCLIENT_ID ClientId
2084 IN HANDLE ThreadHandle
,
2085 IN ACCESS_MASK DesiredAccess
,
2086 IN BOOLEAN OpenAsSelf
,
2087 OUT PHANDLE TokenHandle
2094 IN HANDLE EventHandle
,
2095 OUT PLONG PreviousState OPTIONAL
2101 ZwQueryDefaultLocale (
2102 IN BOOLEAN ThreadOrSystem
,
2106 #if (VER_PRODUCTBUILD >= 2195)
2111 ZwQueryDirectoryObject (
2112 IN HANDLE DirectoryHandle
,
2115 IN BOOLEAN ReturnSingleEntry
,
2116 IN BOOLEAN RestartScan
,
2117 IN OUT PULONG Context
,
2118 OUT PULONG ReturnLength OPTIONAL
2121 #endif /* (VER_PRODUCTBUILD >= 2195) */
2126 ZwQueryInformationProcess (
2127 IN HANDLE ProcessHandle
,
2128 IN PROCESSINFOCLASS ProcessInformationClass
,
2129 OUT PVOID ProcessInformation
,
2130 IN ULONG ProcessInformationLength
,
2131 OUT PULONG ReturnLength OPTIONAL
2138 IN POBJECT_ATTRIBUTES NewFileObjectAttributes
,
2139 IN HANDLE KeyHandle
,
2140 IN POBJECT_ATTRIBUTES OldFileObjectAttributes
2147 IN HANDLE EventHandle
,
2148 OUT PLONG PreviousState OPTIONAL
2151 #if (VER_PRODUCTBUILD >= 2195)
2157 IN HANDLE KeyHandle
,
2158 IN HANDLE FileHandle
,
2162 #endif /* (VER_PRODUCTBUILD >= 2195) */
2168 IN HANDLE KeyHandle
,
2169 IN HANDLE FileHandle
2175 ZwSetDefaultLocale (
2176 IN BOOLEAN ThreadOrSystem
,
2180 #if (VER_PRODUCTBUILD >= 2195)
2185 ZwSetDefaultUILanguage (
2186 IN LANGID LanguageId
2189 #endif /* (VER_PRODUCTBUILD >= 2195) */
2194 ZwSetInformationProcess (
2195 IN HANDLE ProcessHandle
,
2196 IN PROCESSINFOCLASS ProcessInformationClass
,
2197 IN PVOID ProcessInformation
,
2198 IN ULONG ProcessInformationLength
2205 IN PLARGE_INTEGER NewTime
,
2206 OUT PLARGE_INTEGER OldTime OPTIONAL
2213 IN POBJECT_ATTRIBUTES KeyObjectAttributes
2219 ZwWaitForMultipleObjects (
2220 IN ULONG HandleCount
,
2222 IN WAIT_TYPE WaitType
,
2223 IN BOOLEAN Alertable
,
2224 IN PLARGE_INTEGER Timeout OPTIONAL