diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:35 +0000 |
commit | 7e5d7eea9c580ef4b41a765bde624af431942b96 (patch) | |
tree | 2c0d9ca12878fc4525650aa4e54d77a81a07cc09 /vendor/ntapi/src/ntlpcapi.rs | |
parent | Adding debian version 1.70.0+dfsg1-9. (diff) | |
download | rustc-7e5d7eea9c580ef4b41a765bde624af431942b96.tar.xz rustc-7e5d7eea9c580ef4b41a765bde624af431942b96.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/ntapi/src/ntlpcapi.rs')
-rw-r--r-- | vendor/ntapi/src/ntlpcapi.rs | 692 |
1 files changed, 0 insertions, 692 deletions
diff --git a/vendor/ntapi/src/ntlpcapi.rs b/vendor/ntapi/src/ntlpcapi.rs deleted file mode 100644 index 012c9056f..000000000 --- a/vendor/ntapi/src/ntlpcapi.rs +++ /dev/null @@ -1,692 +0,0 @@ -use core::mem::size_of; -use crate::ntapi_base::{CLIENT_ID, CLIENT_ID64}; -use winapi::ctypes::c_double; -use winapi::shared::basetsd::{PSIZE_T, SIZE_T, ULONG64, ULONG_PTR}; -use winapi::shared::ntdef::{ - BOOLEAN, CSHORT, HANDLE, LARGE_INTEGER, NTSTATUS, OBJ_CASE_INSENSITIVE, PHANDLE, - PLARGE_INTEGER, POBJECT_ATTRIBUTES, PULONG, PUNICODE_STRING, PVOID, ULONG, ULONGLONG, - UNICODE_STRING, -}; -use winapi::um::winnt::{ - ACCESS_MASK, PSECURITY_DESCRIPTOR, PSECURITY_QUALITY_OF_SERVICE, PSID, RTL_SRWLOCK, - SECURITY_QUALITY_OF_SERVICE, STANDARD_RIGHTS_REQUIRED, SYNCHRONIZE, -}; -pub const PORT_CONNECT: u32 = 0x0001; -pub const PORT_ALL_ACCESS: u32 = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1; -STRUCT!{struct PORT_MESSAGE_u1_s { - DataLength: CSHORT, - TotalLength: CSHORT, -}} -STRUCT!{struct PORT_MESSAGE_u2_s { - Type: CSHORT, - DataInfoOffset: CSHORT, -}} -UNION!{union PORT_MESSAGE_u1 { - s: PORT_MESSAGE_u1_s, - Length: ULONG, -}} -UNION!{union PORT_MESSAGE_u2 { - s: PORT_MESSAGE_u2_s, - ZeroInit: ULONG, -}} -UNION!{union PORT_MESSAGE_u3 { - ClientId: CLIENT_ID, - DoNotUseThisField: c_double, -}} -UNION!{union PORT_MESSAGE_u4 { - ClientViewSize: SIZE_T, - CallbackId: ULONG, -}} -STRUCT!{struct PORT_MESSAGE { - u1: PORT_MESSAGE_u1, - u2: PORT_MESSAGE_u2, - u3: PORT_MESSAGE_u3, - MessageId: ULONG, - u4: PORT_MESSAGE_u4, -}} -pub type PPORT_MESSAGE = *mut PORT_MESSAGE; -STRUCT!{struct PORT_DATA_ENTRY { - Base: PVOID, - Size: ULONG, -}} -pub type PPORT_DATA_ENTRY = *mut PORT_DATA_ENTRY; -STRUCT!{struct PORT_DATA_INFORMATION { - CountDataEntries: ULONG, - DataEntries: [PORT_DATA_ENTRY; 1], -}} -pub type PPORT_DATA_INFORMATION = *mut PORT_DATA_INFORMATION; -pub const LPC_REQUEST: ULONG = 1; -pub const LPC_REPLY: ULONG = 2; -pub const LPC_DATAGRAM: ULONG = 3; -pub const LPC_LOST_REPLY: ULONG = 4; -pub const LPC_PORT_CLOSED: ULONG = 5; -pub const LPC_CLIENT_DIED: ULONG = 6; -pub const LPC_EXCEPTION: ULONG = 7; -pub const LPC_DEBUG_EVENT: ULONG = 8; -pub const LPC_ERROR_EVENT: ULONG = 9; -pub const LPC_CONNECTION_REQUEST: ULONG = 10; -pub const LPC_KERNELMODE_MESSAGE: CSHORT = 0x8000; -pub const LPC_NO_IMPERSONATE: CSHORT = 0x4000; -pub const PORT_VALID_OBJECT_ATTRIBUTES: u32 = OBJ_CASE_INSENSITIVE; -#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] -pub const PORT_MAXIMUM_MESSAGE_LENGTH: u32 = 512; -#[cfg(target_arch = "x86")] -pub const PORT_MAXIMUM_MESSAGE_LENGTH: u32 = 256; -pub const LPC_MAX_CONNECTION_INFO_SIZE: u32 = 16 * size_of::<ULONG_PTR>() as u32; -pub const PORT_TOTAL_MAXIMUM_MESSAGE_LENGTH: u32 = (PORT_MAXIMUM_MESSAGE_LENGTH - + size_of::<PORT_MESSAGE>() as u32 - + LPC_MAX_CONNECTION_INFO_SIZE - + 0xf) & !0xf; -STRUCT!{struct LPC_CLIENT_DIED_MSG { - PortMsg: PORT_MESSAGE, - CreateTime: LARGE_INTEGER, -}} -pub type PLPC_CLIENT_DIED_MSG = *mut LPC_CLIENT_DIED_MSG; -STRUCT!{struct PORT_VIEW { - Length: ULONG, - SectionHandle: HANDLE, - SectionOffset: ULONG, - ViewSize: SIZE_T, - ViewBase: PVOID, - ViewRemoteBase: PVOID, -}} -pub type PPORT_VIEW = *mut PORT_VIEW; -STRUCT!{struct REMOTE_PORT_VIEW { - Length: ULONG, - ViewSize: SIZE_T, - ViewBase: PVOID, -}} -pub type PREMOTE_PORT_VIEW = *mut REMOTE_PORT_VIEW; -STRUCT!{struct PORT_MESSAGE64_u1_s { - DataLength: CSHORT, - TotalLength: CSHORT, -}} -STRUCT!{struct PORT_MESSAGE64_u2_s { - Type: CSHORT, - DataInfoOffset: CSHORT, -}} -UNION!{union PORT_MESSAGE64_u1 { - s: PORT_MESSAGE64_u1_s, - Length: ULONG, -}} -UNION!{union PORT_MESSAGE64_u2 { - s: PORT_MESSAGE64_u2_s, - ZeroInit: ULONG, -}} -UNION!{union PORT_MESSAGE64_u3 { - ClientId: CLIENT_ID64, - DoNotUseThisField: c_double, -}} -UNION!{union PORT_MESSAGE64_u4 { - ClientViewSize: ULONGLONG, - CallbackId: ULONG, -}} -STRUCT!{struct PORT_MESSAGE64 { - u1: PORT_MESSAGE64_u1, - u2: PORT_MESSAGE64_u2, - u3: PORT_MESSAGE64_u3, - MessageId: ULONG, - u4: PORT_MESSAGE64_u4, -}} -pub type PPORT_MESSAGE64 = *mut PORT_MESSAGE64; -STRUCT!{struct LPC_CLIENT_DIED_MSG64 { - PortMsg: PORT_MESSAGE64, - CreateTime: LARGE_INTEGER, -}} -pub type PLPC_CLIENT_DIED_MSG64 = *mut LPC_CLIENT_DIED_MSG64; -STRUCT!{struct PORT_VIEW64 { - Length: ULONG, - SectionHandle: ULONGLONG, - SectionOffset: ULONG, - ViewSize: ULONGLONG, - ViewBase: ULONGLONG, - ViewRemoteBase: ULONGLONG, -}} -pub type PPORT_VIEW64 = *mut PORT_VIEW64; -STRUCT!{struct REMOTE_PORT_VIEW64 { - Length: ULONG, - ViewSize: ULONGLONG, - ViewBase: ULONGLONG, -}} -pub type PREMOTE_PORT_VIEW64 = *mut REMOTE_PORT_VIEW64; -EXTERN!{extern "system" { - fn NtCreatePort( - PortHandle: PHANDLE, - ObjectAttributes: POBJECT_ATTRIBUTES, - MaxConnectionInfoLength: ULONG, - MaxMessageLength: ULONG, - MaxPoolUsage: ULONG, - ) -> NTSTATUS; - fn NtCreateWaitablePort( - PortHandle: PHANDLE, - ObjectAttributes: POBJECT_ATTRIBUTES, - MaxConnectionInfoLength: ULONG, - MaxMessageLength: ULONG, - MaxPoolUsage: ULONG, - ) -> NTSTATUS; - fn NtConnectPort( - PortHandle: PHANDLE, - PortName: PUNICODE_STRING, - SecurityQos: PSECURITY_QUALITY_OF_SERVICE, - ClientView: PPORT_VIEW, - ServerView: PREMOTE_PORT_VIEW, - MaxMessageLength: PULONG, - ConnectionInformation: PVOID, - ConnectionInformationLength: PULONG, - ) -> NTSTATUS; - fn NtSecureConnectPort( - PortHandle: PHANDLE, - PortName: PUNICODE_STRING, - SecurityQos: PSECURITY_QUALITY_OF_SERVICE, - ClientView: PPORT_VIEW, - RequiredServerSid: PSID, - ServerView: PREMOTE_PORT_VIEW, - MaxMessageLength: PULONG, - ConnectionInformation: PVOID, - ConnectionInformationLength: PULONG, - ) -> NTSTATUS; - fn NtListenPort( - PortHandle: HANDLE, - ConnectionRequest: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtAcceptConnectPort( - PortHandle: PHANDLE, - PortContext: PVOID, - ConnectionRequest: PPORT_MESSAGE, - AcceptConnection: BOOLEAN, - ServerView: PPORT_VIEW, - ClientView: PREMOTE_PORT_VIEW, - ) -> NTSTATUS; - fn NtCompleteConnectPort( - PortHandle: HANDLE, - ) -> NTSTATUS; - fn NtRequestPort( - PortHandle: HANDLE, - RequestMessage: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtRequestWaitReplyPort( - PortHandle: HANDLE, - RequestMessage: PPORT_MESSAGE, - ReplyMessage: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtReplyPort( - PortHandle: HANDLE, - ReplyMessage: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtReplyWaitReplyPort( - PortHandle: HANDLE, - ReplyMessage: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtReplyWaitReceivePort( - PortHandle: HANDLE, - PortContext: *mut PVOID, - ReplyMessage: PPORT_MESSAGE, - ReceiveMessage: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtReplyWaitReceivePortEx( - PortHandle: HANDLE, - PortContext: *mut PVOID, - ReplyMessage: PPORT_MESSAGE, - ReceiveMessage: PPORT_MESSAGE, - Timeout: PLARGE_INTEGER, - ) -> NTSTATUS; - fn NtImpersonateClientOfPort( - PortHandle: HANDLE, - Message: PPORT_MESSAGE, - ) -> NTSTATUS; - fn NtReadRequestData( - PortHandle: HANDLE, - Message: PPORT_MESSAGE, - DataEntryIndex: ULONG, - Buffer: PVOID, - BufferSize: SIZE_T, - NumberOfBytesRead: PSIZE_T, - ) -> NTSTATUS; - fn NtWriteRequestData( - PortHandle: HANDLE, - Message: PPORT_MESSAGE, - DataEntryIndex: ULONG, - Buffer: PVOID, - BufferSize: SIZE_T, - NumberOfBytesWritten: PSIZE_T, - ) -> NTSTATUS; -}} -ENUM!{enum PORT_INFORMATION_CLASS { - PortBasicInformation = 0, - PortDumpInformation = 1, -}} -EXTERN!{extern "system" { - fn NtQueryInformationPort( - PortHandle: HANDLE, - PortInformationClass: PORT_INFORMATION_CLASS, - PortInformation: PVOID, - Length: ULONG, - ReturnLength: PULONG, - ) -> NTSTATUS; -}} -pub type PALPC_HANDLE = *mut HANDLE; -pub type ALPC_HANDLE = HANDLE; -pub const ALPC_PORFLG_ALLOW_LPC_REQUESTS: ULONG = 0x20000; -pub const ALPC_PORFLG_WAITABLE_PORT: ULONG = 0x40000; -pub const ALPC_PORFLG_SYSTEM_PROCESS: ULONG = 0x100000; -#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] -STRUCT!{struct ALPC_PORT_ATTRIBUTES { - Flags: ULONG, - SecurityQos: SECURITY_QUALITY_OF_SERVICE, - MaxMessageLength: SIZE_T, - MemoryBandwidth: SIZE_T, - MaxPoolUsage: SIZE_T, - MaxSectionSize: SIZE_T, - MaxViewSize: SIZE_T, - MaxTotalSectionSize: SIZE_T, - DupObjectTypes: ULONG, - Reserved: ULONG, -}} -#[cfg(target_arch = "x86")] -STRUCT!{struct ALPC_PORT_ATTRIBUTES { - Flags: ULONG, - SecurityQos: SECURITY_QUALITY_OF_SERVICE, - MaxMessageLength: SIZE_T, - MemoryBandwidth: SIZE_T, - MaxPoolUsage: SIZE_T, - MaxSectionSize: SIZE_T, - MaxViewSize: SIZE_T, - MaxTotalSectionSize: SIZE_T, - DupObjectTypes: ULONG, -}} -pub type PALPC_PORT_ATTRIBUTES = *mut ALPC_PORT_ATTRIBUTES; -pub const ALPC_MESSAGE_SECURITY_ATTRIBUTE: ULONG = 0x80000000; -pub const ALPC_MESSAGE_VIEW_ATTRIBUTE: ULONG = 0x40000000; -pub const ALPC_MESSAGE_CONTEXT_ATTRIBUTE: ULONG = 0x20000000; -pub const ALPC_MESSAGE_HANDLE_ATTRIBUTE: ULONG = 0x10000000; -STRUCT!{struct ALPC_MESSAGE_ATTRIBUTES { - AllocatedAttributes: ULONG, - ValidAttributes: ULONG, -}} -pub type PALPC_MESSAGE_ATTRIBUTES = *mut ALPC_MESSAGE_ATTRIBUTES; -STRUCT!{struct ALPC_COMPLETION_LIST_STATE { - Value: ULONG64, -}} -BITFIELD!{ALPC_COMPLETION_LIST_STATE Value: ULONG64 [ - Head set_Head[0..24], - Tail set_Tail[24..48], - ActiveThreadCount set_ActiveThreadCount[48..64], -]} -pub type PALPC_COMPLETION_LIST_STATE = *mut ALPC_COMPLETION_LIST_STATE; -pub const ALPC_COMPLETION_LIST_BUFFER_GRANULARITY_MASK: ULONG = 0x3f; -STRUCT!{#[repr(align(128))] struct ALPC_COMPLETION_LIST_HEADER { - StartMagic: ULONG64, - TotalSize: ULONG, - ListOffset: ULONG, - ListSize: ULONG, - BitmapOffset: ULONG, - BitmapSize: ULONG, - DataOffset: ULONG, - DataSize: ULONG, - AttributeFlags: ULONG, - AttributeSize: ULONG, - __padding0: [u64; 10], - State: ALPC_COMPLETION_LIST_STATE, - LastMessageId: ULONG, - LastCallbackId: ULONG, - __padding1: [u32; 28], - PostCount: ULONG, - __padding2: [u32; 31], - ReturnCount: ULONG, - __padding3: [u32; 31], - LogSequenceNumber: ULONG, - __padding4: [u64; 15], - UserLock: RTL_SRWLOCK, - EndMagic: ULONG64, - __padding5: [u64; 14], -}} -pub type PALPC_COMPLETION_LIST_HEADER = *mut ALPC_COMPLETION_LIST_HEADER; -STRUCT!{struct ALPC_CONTEXT_ATTR { - PortContext: PVOID, - MessageContext: PVOID, - Sequence: ULONG, - MessageId: ULONG, - CallbackId: ULONG, -}} -pub type PALPC_CONTEXT_ATTR = *mut ALPC_CONTEXT_ATTR; -pub const ALPC_HANDLEFLG_DUPLICATE_SAME_ACCESS: ULONG = 0x10000; -pub const ALPC_HANDLEFLG_DUPLICATE_SAME_ATTRIBUTES: ULONG = 0x20000; -pub const ALPC_HANDLEFLG_DUPLICATE_INHERIT: ULONG = 0x80000; -STRUCT!{struct ALPC_HANDLE_ATTR32 { - Flags: ULONG, - Reserved0: ULONG, - SameAccess: ULONG, - SameAttributes: ULONG, - Indirect: ULONG, - Inherit: ULONG, - Reserved1: ULONG, - Handle: ULONG, - ObjectType: ULONG, - DesiredAccess: ULONG, - GrantedAccess: ULONG, -}} -pub type PALPC_HANDLE_ATTR32 = *mut ALPC_HANDLE_ATTR32; -STRUCT!{struct ALPC_HANDLE_ATTR { - Flags: ULONG, - Reserved0: ULONG, - SameAccess: ULONG, - SameAttributes: ULONG, - Indirect: ULONG, - Inherit: ULONG, - Reserved1: ULONG, - Handle: HANDLE, - HandleAttrArray: PALPC_HANDLE_ATTR32, - ObjectType: ULONG, - HandleCount: ULONG, - DesiredAccess: ACCESS_MASK, - GrantedAccess: ACCESS_MASK, -}} -pub type PALPC_HANDLE_ATTR = *mut ALPC_HANDLE_ATTR; -pub const ALPC_SECFLG_CREATE_HANDLE: ULONG = 0x20000; -STRUCT!{struct ALPC_SECURITY_ATTR { - Flags: ULONG, - QoS: PSECURITY_QUALITY_OF_SERVICE, - ContextHandle: ALPC_HANDLE, -}} -pub type PALPC_SECURITY_ATTR = *mut ALPC_SECURITY_ATTR; -pub const ALPC_VIEWFLG_NOT_SECURE: ULONG = 0x40000; -STRUCT!{struct ALPC_DATA_VIEW_ATTR { - Flags: ULONG, - SectionHandle: ALPC_HANDLE, - ViewBase: PVOID, - ViewSize: SIZE_T, -}} -pub type PALPC_DATA_VIEW_ATTR = *mut ALPC_DATA_VIEW_ATTR; -ENUM!{enum ALPC_PORT_INFORMATION_CLASS { - AlpcBasicInformation = 0, - AlpcPortInformation = 1, - AlpcAssociateCompletionPortInformation = 2, - AlpcConnectedSIDInformation = 3, - AlpcServerInformation = 4, - AlpcMessageZoneInformation = 5, - AlpcRegisterCompletionListInformation = 6, - AlpcUnregisterCompletionListInformation = 7, - AlpcAdjustCompletionListConcurrencyCountInformation = 8, - AlpcRegisterCallbackInformation = 9, - AlpcCompletionListRundownInformation = 10, - AlpcWaitForPortReferences = 11, -}} -STRUCT!{struct ALPC_BASIC_INFORMATION { - Flags: ULONG, - SequenceNo: ULONG, - PortContext: PVOID, -}} -pub type PALPC_BASIC_INFORMATION = *mut ALPC_BASIC_INFORMATION; -STRUCT!{struct ALPC_PORT_ASSOCIATE_COMPLETION_PORT { - CompletionKey: PVOID, - CompletionPort: HANDLE, -}} -pub type PALPC_PORT_ASSOCIATE_COMPLETION_PORT = *mut ALPC_PORT_ASSOCIATE_COMPLETION_PORT; -STRUCT!{struct ALPC_SERVER_INFORMATION_Out { - ThreadBlocked: BOOLEAN, - ConnectedProcessId: HANDLE, - ConnectionPortName: UNICODE_STRING, -}} -UNION!{union ALPC_SERVER_INFORMATION { - ThreadHandle: HANDLE, - Out: ALPC_SERVER_INFORMATION_Out, -}} -pub type PALPC_SERVER_INFORMATION = *mut ALPC_SERVER_INFORMATION; -STRUCT!{struct ALPC_PORT_MESSAGE_ZONE_INFORMATION { - Buffer: PVOID, - Size: ULONG, -}} -pub type PALPC_PORT_MESSAGE_ZONE_INFORMATION = *mut ALPC_PORT_MESSAGE_ZONE_INFORMATION; -STRUCT!{struct ALPC_PORT_COMPLETION_LIST_INFORMATION { - Buffer: PVOID, - Size: ULONG, - ConcurrencyCount: ULONG, - AttributeFlags: ULONG, -}} -pub type PALPC_PORT_COMPLETION_LIST_INFORMATION = *mut ALPC_PORT_COMPLETION_LIST_INFORMATION; -ENUM!{enum ALPC_MESSAGE_INFORMATION_CLASS { - AlpcMessageSidInformation = 0, - AlpcMessageTokenModifiedIdInformation = 1, - AlpcMessageDirectStatusInformation = 2, - AlpcMessageHandleInformation = 3, - MaxAlpcMessageInfoClass = 4, -}} -pub type PALPC_MESSAGE_INFORMATION_CLASS = *mut ALPC_MESSAGE_INFORMATION_CLASS; -STRUCT!{struct ALPC_MESSAGE_HANDLE_INFORMATION { - Index: ULONG, - Flags: ULONG, - Handle: ULONG, - ObjectType: ULONG, - GrantedAccess: ACCESS_MASK, -}} -pub type PALPC_MESSAGE_HANDLE_INFORMATION = *mut ALPC_MESSAGE_HANDLE_INFORMATION; -EXTERN!{extern "system" { - fn NtAlpcCreatePort( - PortHandle: PHANDLE, - ObjectAttributes: POBJECT_ATTRIBUTES, - PortAttributes: PALPC_PORT_ATTRIBUTES, - ) -> NTSTATUS; - fn NtAlpcDisconnectPort( - PortHandle: HANDLE, - Flags: ULONG, - ) -> NTSTATUS; - fn NtAlpcQueryInformation( - PortHandle: HANDLE, - PortInformationClass: ALPC_PORT_INFORMATION_CLASS, - PortInformation: PVOID, - Length: ULONG, - ReturnLength: PULONG, - ) -> NTSTATUS; - fn NtAlpcSetInformation( - PortHandle: HANDLE, - PortInformationClass: ALPC_PORT_INFORMATION_CLASS, - PortInformation: PVOID, - Length: ULONG, - ) -> NTSTATUS; - fn NtAlpcCreatePortSection( - PortHandle: HANDLE, - Flags: ULONG, - SectionHandle: HANDLE, - SectionSize: SIZE_T, - AlpcSectionHandle: PALPC_HANDLE, - ActualSectionSize: PSIZE_T, - ) -> NTSTATUS; - fn NtAlpcDeletePortSection( - PortHandle: HANDLE, - Flags: ULONG, - SectionHandle: ALPC_HANDLE, - ) -> NTSTATUS; - fn NtAlpcCreateResourceReserve( - PortHandle: HANDLE, - Flags: ULONG, - MessageSize: SIZE_T, - ResourceId: PALPC_HANDLE, - ) -> NTSTATUS; - fn NtAlpcDeleteResourceReserve( - PortHandle: HANDLE, - Flags: ULONG, - ResourceId: ALPC_HANDLE, - ) -> NTSTATUS; - fn NtAlpcCreateSectionView( - PortHandle: HANDLE, - Flags: ULONG, - ViewAttributes: PALPC_DATA_VIEW_ATTR, - ) -> NTSTATUS; - fn NtAlpcDeleteSectionView( - PortHandle: HANDLE, - Flags: ULONG, - ViewBase: PVOID, - ) -> NTSTATUS; - fn NtAlpcCreateSecurityContext( - PortHandle: HANDLE, - Flags: ULONG, - SecurityAttribute: PALPC_SECURITY_ATTR, - ) -> NTSTATUS; - fn NtAlpcDeleteSecurityContext( - PortHandle: HANDLE, - Flags: ULONG, - ContextHandle: ALPC_HANDLE, - ) -> NTSTATUS; - fn NtAlpcRevokeSecurityContext( - PortHandle: HANDLE, - Flags: ULONG, - ContextHandle: ALPC_HANDLE, - ) -> NTSTATUS; - fn NtAlpcQueryInformationMessage( - PortHandle: HANDLE, - PortMessage: PPORT_MESSAGE, - MessageInformationClass: ALPC_MESSAGE_INFORMATION_CLASS, - MessageInformation: PVOID, - Length: ULONG, - ReturnLength: PULONG, - ) -> NTSTATUS; -}} -pub const ALPC_MSGFLG_REPLY_MESSAGE: ULONG = 0x1; -pub const ALPC_MSGFLG_LPC_MODE: ULONG = 0x2; -pub const ALPC_MSGFLG_RELEASE_MESSAGE: ULONG = 0x10000; -pub const ALPC_MSGFLG_SYNC_REQUEST: ULONG = 0x20000; -pub const ALPC_MSGFLG_WAIT_USER_MODE: ULONG = 0x100000; -pub const ALPC_MSGFLG_WAIT_ALERTABLE: ULONG = 0x200000; -pub const ALPC_MSGFLG_WOW64_CALL: ULONG = 0x80000000; -EXTERN!{extern "system" { - fn NtAlpcConnectPort( - PortHandle: PHANDLE, - PortName: PUNICODE_STRING, - ObjectAttributes: POBJECT_ATTRIBUTES, - PortAttributes: PALPC_PORT_ATTRIBUTES, - Flags: ULONG, - RequiredServerSid: PSID, - ConnectionMessage: PPORT_MESSAGE, - BufferLength: PULONG, - OutMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - InMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - Timeout: PLARGE_INTEGER, - ) -> NTSTATUS; - fn NtAlpcConnectPortEx( - PortHandle: PHANDLE, - ConnectionPortObjectAttributes: POBJECT_ATTRIBUTES, - ClientPortObjectAttributes: POBJECT_ATTRIBUTES, - PortAttributes: PALPC_PORT_ATTRIBUTES, - Flags: ULONG, - ServerSecurityRequirements: PSECURITY_DESCRIPTOR, - ConnectionMessage: PPORT_MESSAGE, - BufferLength: PSIZE_T, - OutMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - InMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - Timeout: PLARGE_INTEGER, - ) -> NTSTATUS; - fn NtAlpcAcceptConnectPort( - PortHandle: PHANDLE, - ConnectionPortHandle: HANDLE, - Flags: ULONG, - ObjectAttributes: POBJECT_ATTRIBUTES, - PortAttributes: PALPC_PORT_ATTRIBUTES, - PortContext: PVOID, - ConnectionRequest: PPORT_MESSAGE, - ConnectionMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - AcceptConnection: BOOLEAN, - ) -> NTSTATUS; - fn NtAlpcSendWaitReceivePort( - PortHandle: HANDLE, - Flags: ULONG, - SendMessageA: PPORT_MESSAGE, - SendMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - ReceiveMessage: PPORT_MESSAGE, - BufferLength: PSIZE_T, - ReceiveMessageAttributes: PALPC_MESSAGE_ATTRIBUTES, - Timeout: PLARGE_INTEGER, - ) -> NTSTATUS; -}} -pub const ALPC_CANCELFLG_TRY_CANCEL: ULONG = 0x1; -pub const ALPC_CANCELFLG_NO_CONTEXT_CHECK: ULONG = 0x8; -pub const ALPC_CANCELFLGP_FLUSH: ULONG = 0x10000; -EXTERN!{extern "system" { - fn NtAlpcCancelMessage( - PortHandle: HANDLE, - Flags: ULONG, - MessageContext: PALPC_CONTEXT_ATTR, - ) -> NTSTATUS; - fn NtAlpcImpersonateClientOfPort( - PortHandle: HANDLE, - Message: PPORT_MESSAGE, - Flags: PVOID, - ) -> NTSTATUS; - fn NtAlpcImpersonateClientContainerOfPort( - PortHandle: HANDLE, - Message: PPORT_MESSAGE, - Flags: ULONG, - ) -> NTSTATUS; - fn NtAlpcOpenSenderProcess( - ProcessHandle: PHANDLE, - PortHandle: HANDLE, - PortMessage: PPORT_MESSAGE, - Flags: ULONG, - DesiredAccess: ACCESS_MASK, - ObjectAttributes: POBJECT_ATTRIBUTES, - ) -> NTSTATUS; - fn NtAlpcOpenSenderThread( - ThreadHandle: PHANDLE, - PortHandle: HANDLE, - PortMessage: PPORT_MESSAGE, - Flags: ULONG, - DesiredAccess: ACCESS_MASK, - ObjectAttributes: POBJECT_ATTRIBUTES, - ) -> NTSTATUS; - fn AlpcMaxAllowedMessageLength() -> ULONG; - fn AlpcGetHeaderSize( - Flags: ULONG, - ) -> ULONG; - fn AlpcInitializeMessageAttribute( - AttributeFlags: ULONG, - Buffer: PALPC_MESSAGE_ATTRIBUTES, - BufferSize: ULONG, - RequiredBufferSize: PULONG, - ) -> NTSTATUS; - fn AlpcGetMessageAttribute( - Buffer: PALPC_MESSAGE_ATTRIBUTES, - AttributeFlag: ULONG, - ) -> PVOID; - fn AlpcRegisterCompletionList( - PortHandle: HANDLE, - Buffer: PALPC_COMPLETION_LIST_HEADER, - Size: ULONG, - ConcurrencyCount: ULONG, - AttributeFlags: ULONG, - ) -> NTSTATUS; - fn AlpcUnregisterCompletionList( - PortHandle: HANDLE, - ) -> NTSTATUS; - fn AlpcRundownCompletionList( - PortHandle: HANDLE, - ) -> NTSTATUS; - fn AlpcAdjustCompletionListConcurrencyCount( - PortHandle: HANDLE, - ConcurrencyCount: ULONG, - ) -> NTSTATUS; - fn AlpcRegisterCompletionListWorkerThread( - CompletionList: PVOID, - ) -> BOOLEAN; - fn AlpcUnregisterCompletionListWorkerThread( - CompletionList: PVOID, - ) -> BOOLEAN; - fn AlpcGetCompletionListLastMessageInformation( - CompletionList: PVOID, - LastMessageId: PULONG, - LastCallbackId: PULONG, - ); - fn AlpcGetOutstandingCompletionListMessageCount( - CompletionList: PVOID, - ) -> ULONG; - fn AlpcGetMessageFromCompletionList( - CompletionList: PVOID, - MessageAttributes: *mut PALPC_MESSAGE_ATTRIBUTES, - ) -> PPORT_MESSAGE; - fn AlpcFreeCompletionListMessage( - CompletionList: PVOID, - Message: PPORT_MESSAGE, - ); - fn AlpcGetCompletionListMessageAttributes( - CompletionList: PVOID, - Message: PPORT_MESSAGE, - ) -> PALPC_MESSAGE_ATTRIBUTES; -}} |