|
#define | ExInterlockedIncrementLong(Addend, Lock) Exfi386InterlockedIncrementLong(Addend) |
|
#define | ExInterlockedDecrementLong(Addend, Lock) Exfi386InterlockedDecrementLong(Addend) |
|
#define | ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value) |
|
#define | ExAcquireSpinLock(Lock, OldIrql) KeAcquireSpinLock((Lock), (OldIrql)) |
|
#define | ExReleaseSpinLock(Lock, OldIrql) KeReleaseSpinLock((Lock), (OldIrql)) |
|
#define | ExAcquireSpinLockAtDpcLevel(Lock) KeAcquireSpinLockAtDpcLevel(Lock) |
|
#define | ExReleaseSpinLockFromDpcLevel(Lock) KeReleaseSpinLockFromDpcLevel(Lock) |
|
#define | ExInitializeSListHead InitializeSListHead |
|
#define | ExInterlockedPushEntrySList(SListHead, SListEntry, Lock) ExpInterlockedPushEntrySList(SListHead, SListEntry) |
|
#define | ExInterlockedPopEntrySList(SListHead, Lock) ExpInterlockedPopEntrySList(SListHead) |
|
#define | ExInterlockedFlushSList(SListHead) ExpInterlockedFlushSList(SListHead) |
|
#define | ExGetCurrentResourceThread() ((ULONG_PTR)PsGetCurrentThread()) |
|
#define | ExReleaseResource(R) (ExReleaseResourceLite(R)) |
|
#define | ExInitializeWorkItem(Item, Routine, Context) |
|
#define | ExInterlockedAllocateFromZone(Zone, Lock) ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock)) |
|
#define | ExInterlockedFreeToZone(Zone, Block, Lock) ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock) |
|
#define | ExIsFullZone(Zone) ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL) |
|
#define | ExIsObjectInFirstZoneSegment(Zone, Object) |
|
#define | ExAcquireResourceExclusive ExAcquireResourceExclusiveLite |
|
#define | ExAcquireResourceShared ExAcquireResourceSharedLite |
|
#define | ExConvertExclusiveToShared ExConvertExclusiveToSharedLite |
|
#define | ExDeleteResource ExDeleteResourceLite |
|
#define | ExInitializeResource ExInitializeResourceLite |
|
#define | ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite |
|
#define | ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite |
|
#define | ExIsResourceAcquired ExIsResourceAcquiredSharedLite |
|
#define | ExReleaseResourceForThread ExReleaseResourceForThreadLite |
|
#define | RESULT_ZERO 0 |
|
#define | RESULT_NEGATIVE 1 |
|
#define | RESULT_POSITIVE 2 |
|
#define | ExDisableResourceBoost ExDisableResourceBoostLite |
|
#define | ExAllocatePoolWithQuotaTag(a, b, c) ExAllocatePoolWithQuota(a,b) |
|
#define | ExAllocatePoolWithTag(a, b, c) ExAllocatePool(a,b) |
|
#define | ExInterlockedAddLargeStatistic(Addend, Increment) (VOID)InterlockedAdd64(&(Addend)->QuadPart, Increment) |
|
#define | ExInterlockedCompareExchange64(Destination, Exchange, Comperand, Lock) InterlockedCompareExchange64(Destination, *(Exchange), *(Comperand)) |
|
#define | ExIsResourceAcquiredLite ExIsResourceAcquiredSharedLite |
|
#define | EX_TIMER_HIGH_RESOLUTION 0x4 |
|
#define | EX_TIMER_NO_WAKE 0x8 |
|
#define | EX_TIMER_UNLIMITED_TOLERANCE ((LONGLONG)-1) |
|
#define | EX_TIMER_NOTIFICATION (1UL << 31) |
|
#define | FLAG_OWNER_POINTER_IS_THREAD 0x1 |
|
|
| $if (_WDMDDK_) _IRQL_raises_(APC_LEVEL) _IRQL_saves_global_(OldIrql |
|
FastMutex NTKERNELAPI VOID FASTCALL | ExAcquireFastMutex (_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PFAST_MUTEX FastMutex) |
|
| _IRQL_requires_ (APC_LEVEL) _IRQL_restores_global_(OldIrql |
|
FastMutex NTKERNELAPI VOID FASTCALL | ExReleaseFastMutex (_Inout_ _Requires_lock_held_(*_Curr_) _Releases_lock_(*_Curr_) PFAST_MUTEX FastMutex) |
|
_Must_inspect_result_ | _Success_ (return!=FALSE) _IRQL_raises_(APC_LEVEL) _IRQL_saves_global_(OldIrql |
|
_Must_inspect_result_ FastMutex NTKERNELAPI BOOLEAN FASTCALL | ExTryToAcquireFastMutex (_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PFAST_MUTEX FastMutex) |
|
NTKERNELAPI PSLIST_ENTRY | ExpInterlockedPushEntrySList (_Inout_ PSLIST_HEADER SListHead, _Inout_ __drv_aliasesMem PSLIST_ENTRY SListEntry) |
|
NTKERNELAPI PSLIST_ENTRY | ExpInterlockedPopEntrySList (_Inout_ PSLIST_HEADER SListHead) |
|
NTKERNELAPI PSLIST_ENTRY | ExpInterlockedFlushSList (_Inout_ PSLIST_HEADER SListHead) |
|
FORCEINLINE USHORT | ExQueryDepthSList (_In_ PSLIST_HEADER SListHead) |
|
| _IRQL_requires_max_ (APC_LEVEL) static __inline PVOID ExAllocateFromPagedLookasideList(_Inout_ PPAGED_LOOKASIDE_LIST Lookaside) |
|
| if (ExQueryDepthSList(&Lookaside->L.ListHead) >=Lookaside->L.Depth) |
|
FORCEINLINE VOID | ExInitializeFastMutex (_Out_ PFAST_MUTEX FastMutex) |
|
| $endif (_WDMDDK_) $if(_NTDDK_) static __inline PVOID ExAllocateFromZone(IN PZONE_HEADER Zone) |
|
static __inline PVOID | ExFreeToZone (IN PZONE_HEADER Zone, IN PVOID Block) |
|
| $endif (_NTDDK_) $if(_NTIFS_) VOID NTAPI ExInitializePushLock(_Out_ PEX_PUSH_LOCK PushLock) |
|
| $endif (_NTIFS_) $if(_WDMDDK_) _IRQL_requires_max_(APC_LEVEL) _Requires_lock_held_(_Global_critical_region_) NTKERNELAPI VOID FASTCALL ExAcquireFastMutexUnsafe(_Inout_ _Requires_lock_not_held_(*_Curr_) _Acquires_lock_(*_Curr_) PFAST_MUTEX FastMutex) |
|
| _Requires_lock_held_ (_Global_critical_region_) _Requires_lock_not_held_(*Resource) _When_(Wait!=0 |
|
_Acquires_exclusive_lock_ Resource | _Post_satisfies_ (return==1)) _When_(Wait |
|
| __drv_preferredFunction ("ExAllocatePoolWithTag", "No tag interferes with debugging.") __drv_allocatesMem(Mem) _When_((PoolType &PagedPool) !=0 |
|
| _IRQL_requires_max_ (APC_LEVEL)) _When_((PoolType &PagedPool) |
|
| _IRQL_requires_max_ (DISPATCH_LEVEL)) _When_((PoolType &NonPagedPoolMustSucceed) !=0 |
|
| __drv_reportError ("Must succeed pool allocations are forbidden. " "Allocation failures cause a system crash")) _When_((PoolType &(NonPagedPoolMustSucceed|POOL_RAISE_IF_ALLOCATION_FAILURE)) == 0 |
|
_Post_maybenull_ _Must_inspect_result_ | _When_ ((PoolType &(NonPagedPoolMustSucceed|POOL_RAISE_IF_ALLOCATION_FAILURE)) !=0, _Post_notnull_) _Post_writable_byte_size_(NumberOfBytes) NTKERNELAPI PVOID NTAPI ExAllocatePool(__drv_strictTypeMatch(__drv_typeExpr) _In_ POOL_TYPE PoolType |
|
| __drv_preferredFunction ("ExAllocatePoolWithQuotaTag", "No tag interferes with debugging.") __drv_allocatesMem(Mem) _When_((PoolType &PagedPool) !=0 |
|
_Post_maybenull_ _Must_inspect_result_ | _When_ ((PoolType &POOL_QUOTA_FAIL_INSTEAD_OF_RAISE)==0, _Post_notnull_) _Post_writable_byte_size_(NumberOfBytes) NTKERNELAPI PVOID NTAPI ExAllocatePoolWithQuota(__drv_strictTypeMatch(__drv_typeExpr) _In_ POOL_TYPE PoolType |
|
| __drv_allocatesMem (Mem) _When_((PoolType &PagedPool) !=0 |
|
_Post_maybenull_ _Must_inspect_result_ _In_ SIZE_T _In_ ULONG _In_ | __drv_strictTypeMatch (__drv_typeExpr) EX_POOL_PRIORITY Priority) |
|
| if (Allocation !=NULL) |
|
| _IRQL_requires_max_ (DISPATCH_LEVEL) NTKERNELAPI VOID NTAPI ExConvertExclusiveToSharedLite(_Inout_ _Requires_lock_held_(*_Curr_) PERESOURCE Resource) |
|
NTKERNELAPI VOID NTAPI | ExDeleteNPagedLookasideList (_Inout_ PNPAGED_LOOKASIDE_LIST Lookaside) |
|
NTKERNELAPI LARGE_INTEGER NTAPI | ExInterlockedAddLargeInteger (_Inout_ PLARGE_INTEGER Addend, _In_ LARGE_INTEGER Increment, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI ULONG FASTCALL | ExInterlockedAddUlong (_Inout_ PULONG Addend, _In_ ULONG Increment, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI PLIST_ENTRY FASTCALL | ExInterlockedInsertHeadList (_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY ListEntry, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI PLIST_ENTRY FASTCALL | ExInterlockedInsertTailList (_Inout_ PLIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PLIST_ENTRY ListEntry, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI PSINGLE_LIST_ENTRY FASTCALL | ExInterlockedPopEntryList (_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI PSINGLE_LIST_ENTRY FASTCALL | ExInterlockedPushEntryList (_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY ListEntry, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
NTKERNELAPI PLIST_ENTRY FASTCALL | ExInterlockedRemoveHeadList (_Inout_ PLIST_ENTRY ListHead, _Inout_ _Requires_lock_not_held_(*_Curr_) PKSPIN_LOCK Lock) |
|
| _IRQL_requires_max_ (PASSIVE_LEVEL) NTKERNELAPI BOOLEAN NTAPI ExIsProcessorFeaturePresent(_In_ ULONG ProcessorFeature) |
| Queries information details about a security descriptor.
|
|
NTKERNELAPI VOID NTAPI | ExLocalTimeToSystemTime (_In_ PLARGE_INTEGER LocalTime, _Out_ PLARGE_INTEGER SystemTime) |
|
NTKERNELAPI PEX_TIMER NTAPI | ExAllocateTimer (_In_opt_ PEXT_CALLBACK Callback, _In_opt_ PVOID CallbackContext, _In_ ULONG Attributes) |
|
NTKERNELAPI BOOLEAN NTAPI | ExSetTimer (_In_ PEX_TIMER Timer, _In_ LONGLONG DueTime, _In_ LONGLONG Period, _In_opt_ PEXT_SET_PARAMETERS Parameters) |
|
NTKERNELAPI BOOLEAN NTAPI | ExCancelTimer (_Inout_ PEX_TIMER Timer, _In_opt_ PEXT_CANCEL_PARAMETERS Parameters) |
|
NTKERNELAPI BOOLEAN NTAPI | ExDeleteTimer (_In_ PEX_TIMER Timer, _In_ BOOLEAN Cancel, _In_ BOOLEAN Wait, _In_opt_ PEXT_DELETE_PARAMETERS Parameters) |
|
FORCEINLINE VOID | ExInitializeSetTimerParameters (_Out_ PEXT_SET_PARAMETERS Parameters) |
|
NTKERNELAPI VOID NTAPI | ExSystemTimeToLocalTime (_In_ PLARGE_INTEGER SystemTime, _Out_ PLARGE_INTEGER LocalTime) |
|
NTKERNELAPI NTSTATUS NTAPI | ExInitializeZone (_Out_ PZONE_HEADER Zone, _In_ ULONG BlockSize, _Inout_ PVOID InitialSegment, _In_ ULONG InitialSegmentSize) |
|
NTKERNELAPI VOID FASTCALL | ExInitializeRundownProtection (_Out_ PEX_RUNDOWN_REF RunRef) |
|
NTKERNELAPI VOID FASTCALL | ExReInitializeRundownProtection (_Inout_ PEX_RUNDOWN_REF RunRef) |
|
NTKERNELAPI VOID FASTCALL | ExReleaseRundownProtection (_Inout_ PEX_RUNDOWN_REF RunRef) |
|
NTKERNELAPI VOID FASTCALL | ExRundownCompleted (_Out_ PEX_RUNDOWN_REF RunRef) |
|
NTKERNELAPI BOOLEAN NTAPI | ExVerifySuite (__drv_strictTypeMatch(__drv_typeExpr) _In_ SUITE_TYPE SuiteType) |
|
NTKERNELAPI VOID FASTCALL | ExWaitForRundownProtectionRelease (_Inout_ PEX_RUNDOWN_REF RunRef) |
|
NTKERNELAPI VOID FASTCALL | ExReleaseRundownProtectionEx (_Inout_ PEX_RUNDOWN_REF RunRef, _In_ ULONG Count) |
|
NTKERNELAPI VOID FASTCALL | ExReleaseRundownProtectionCacheAware (_Inout_ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware) |
|
NTKERNELAPI VOID FASTCALL | ExReleaseRundownProtectionCacheAwareEx (_Inout_ PEX_RUNDOWN_REF_CACHE_AWARE RunRef, _In_ ULONG Count) |
|
NTKERNELAPI VOID FASTCALL | ExWaitForRundownProtectionReleaseCacheAware (IN OUT PEX_RUNDOWN_REF_CACHE_AWARE RunRef) |
|
NTKERNELAPI VOID FASTCALL | ExReInitializeRundownProtectionCacheAware (_Inout_ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware) |
|
NTKERNELAPI VOID FASTCALL | ExRundownCompletedCacheAware (_Inout_ PEX_RUNDOWN_REF_CACHE_AWARE RunRefCacheAware) |
|
| __drv_allocatesMem (Mem) _Must_inspect_result_ _IRQL_requires_max_(DISPATCH_LEVEL) FORCEINLINE PVOID ExAllocateFromLookasideListEx(_Inout_ PLOOKASIDE_LIST_EX Lookaside) |
|
_In_ | __drv_freesMem (Entry) PVOID Entry) |
|
_In_ | __drv_freesMem (Mem) PVOID Entry) |
|
Queries information details about a security descriptor.
Computes the quota size of a security descriptor.
Assigns a security descriptor for a new object.
An extended function that assigns a security descriptor for a new object.
Frees a security descriptor.
An extended function that sets new information data to a security descriptor.
Modifies some information data about a security descriptor.
- Parameters
-
[in] | SecurityInformation | Security information details to be queried from a security descriptor. |
[out] | SecurityDescriptor | The returned security descriptor with security information data. |
[in,out] | Length | The returned length of a security descriptor. |
[in,out] | ObjectsSecurityDescriptor | The returned object security descriptor. |
- Returns
- Returns STATUS_SUCCESS if the operations have been completed successfully and that the specific information about the security descriptor has been queried. STATUS_BUFFER_TOO_SMALL is returned if the buffer size is too small to contain the queried info about the security descriptor.
- Parameters
-
[in] | Object | If specified, the function will use this arbitrary object that points to an object security descriptor. |
[in] | SecurityInformation | Security information details to be set. |
[in] | SecurityDescriptor | A security descriptor where its info is to be changed. |
[in,out] | ObjectsSecurityDescriptor | The returned pointer to security descriptor objects. |
[in] | PoolType | Pool type for the new security descriptor to allocate. |
[in] | GenericMapping | The generic mapping of access rights masks. |
- Returns
- See SeSetSecurityDescriptorInfoEx.
- Parameters
-
[in] | Object | If specified, the function will use this arbitrary object that points to an object security descriptor. |
[in] | SecurityInformation | Security information details to be set. |
[in] | SecurityDescriptor | A security descriptor where its info is to be changed. |
[in,out] | ObjectsSecurityDescriptor | The returned pointer to security descriptor objects. |
[in] | AutoInheritFlags | Flags bitmask inheritation, influencing how the security descriptor can be inherited and if it can be in the first place. |
[in] | PoolType | Pool type for the new security descriptor to allocate. |
[in] | GenericMapping | The generic mapping of access rights masks. |
- Returns
- Returns STATUS_SUCCESS if the operations have been completed without problems and that new info has been set to the security descriptor. STATUS_NO_SECURITY_ON_OBJECT is returned if the object does not have a security descriptor. STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the new security descriptor with new info set has failed.
- Parameters
-
[in] | SecurityDescriptor | A security descriptor to be freed from memory. |
- Returns
- Returns STATUS_SUCCESS.
- Parameters
-
[in] | _ParentDescriptor | A security descriptor of the parent object that is being created. |
[in] | _ExplicitDescriptor | An explicit security descriptor that is applied to a new object. |
[out] | NewDescriptor | The new allocated security descriptor. |
[in] | ObjectType | The type of the new object. |
[in] | IsDirectoryObject | Set this to TRUE if the newly created object is a directory object, otherwise set this to FALSE. |
[in] | AutoInheritFlags | Automatic inheritance flags that influence how access control entries within ACLs from security descriptors are inherited. |
[in] | SubjectContext | Security subject context of the new object. |
[in] | GenericMapping | Generic mapping of access mask rights. |
[in] | PoolType | This parameter is unused. |
- Returns
- Returns STATUS_SUCCESS if the operations have been completed successfully and that the security descriptor has been assigned to the new object. STATUS_NO_TOKEN is returned if the caller hasn't supplied a valid argument to a security subject context. STATUS_INVALID_OWNER is returned if the caller hasn't supplied a parent descriptor that belongs to the main user (owner). STATUS_INVALID_PRIMARY_GROUP is returned by the same reason as with the previous NTSTATUS code. The two NTSTATUS codes are returned if the calling thread stated that the owner and/or group is defaulted to the parent descriptor (SEF_DEFAULT_OWNER_FROM_PARENT and/or SEF_DEFAULT_GROUP_FROM_PARENT respectively). STATUS_INSUFFICIENT_RESOURCES is returned if memory pool allocation for the descriptor buffer has failed. A failure NTSTATUS is returned otherwise.
- Parameters
-
[in] | ParentDescriptor | A security descriptor of the parent object that is being created. |
[in] | ExplicitDescriptor | An explicit security descriptor that is applied to a new object. |
[out] | NewDescriptor | The new allocated security descriptor. |
[in] | IsDirectoryObject | Set this to TRUE if the newly created object is a directory object, otherwise set this to FALSE. |
[in] | SubjectContext | Security subject context of the new object. |
[in] | GenericMapping | Generic mapping of access mask rights. |
[in] | PoolType | This parameter is unused. |
- Returns
- See SeAssignSecurityEx.
- Parameters
-
[in] | SecurityDescriptor | A security descriptor. |
[out] | QuotaInfoSize | The returned quota size of the given security descriptor to the caller. The function may return 0 to this parameter if the descriptor doesn't have a group or a discretionary access control list (DACL) even. |
- Returns
- Returns STATUS_SUCCESS if the quota size of a security descriptor has been computed successfully. STATUS_UNKNOWN_REVISION is returned if the security descriptor has an invalid revision.
Definition at line 64 of file Messaging.c.
75{
78
79
81 {
83 }
84
85
87 {
89 }
90
91
92
93
94
95
98 {
100 }
101
102
109 0,
110 0,
111 (
PVOID *)&PortObject);
113 {
114
116
117
119
120
127
128
132 0,
136 {
137
139
140
143
144
146 }
147 }
148
150 {
151
153 }
154
156}
static const INTERNET_PORT ServerPort
POBJECT_TYPE ServerPortObjectType
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define InsertTailList(ListHead, Entry)
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
#define OBJ_KERNEL_HANDLE
static LONG MaxConnections
#define STANDARD_RIGHTS_ALL
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
FLT_MUTEX_LIST_HEAD ConnectionList
PFLT_DISCONNECT_NOTIFY DisconnectNotify
PFLT_MESSAGE_NOTIFY MessageNotify
PFLT_CONNECT_NOTIFY ConnectNotify
#define RtlZeroMemory(Destination, Length)
#define STATUS_INVALID_PARAMETER