📄 rpc.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Remote Procedure Call interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: rpc.h, released June 2000. }
{ The original Pascal code is: Rpc.pas, released December 2000 }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License"); you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
{ implied. See the License for the specific language governing }
{ rights and limitations under the License. }
{ }
{******************************************************************}
unit Rpc;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "Rpc.h"'}
{$HPPEMIT '#include "RpcDce.h"'}
{$HPPEMIT ''}
{$HPPEMIT 'typedef RPC_BINDING_VECTOR *PRPC_BINDING_VECTOR'}
{$HPPEMIT 'typedef UUID_VECTOR *PUUID_VECTOR'}
{$HPPEMIT 'typedef RPC_IF_ID *PRPC_IF_ID'}
{$HPPEMIT 'typedef RPC_PROTSEQ_VECTORA *PRPC_PROTSEQ_VECTORA'}
{$HPPEMIT 'typedef RPC_PROTSEQ_VECTORW *PRPC_PROTSEQ_VECTORW'}
{$HPPEMIT 'typedef RPC_STATS_VECTOR *PRPC_STATS_VECTOR'}
{$HPPEMIT 'typedef RPC_IF_ID_VECTOR *PRPC_IF_ID_VECTOR'}
{$HPPEMIT 'typedef RPC_AUTHZ_HANDLE *PRPC_AUTHZ_HANDLE'}
{$HPPEMIT 'typedef RPC_AUTH_IDENTITY_HANDLE *PRPC_AUTH_IDENTITY_HANDLE'}
{$HPPEMIT 'typedef RPC_BINDING_HANDLE *PRPC_BINDING_HANDLE'}
{$HPPEMIT 'typedef UUID *PUUID'}
{$HPPEMIT 'typedef UUID *LPUUID'}
{$HPPEMIT ''}
{$HPPEMIT '#include "RpcNsi.h"'}
{$HPPEMIT '#include "RpcNtErr.h"'}
{$HPPEMIT '#include "RpcAsync.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinBase, WinError, WinNT, WinType;
{ Rpc.h }
type
I_RPC_HANDLE = Pointer;
{$EXTERNALSYM I_RPC_HANDLE}
RPC_STATUS = Longint;
{$EXTERNALSYM RPC_STATUS}
{ RpcDce.h }
type
PPChar = ^PChar;
PPWideChar = ^PWideChar;
PCardinal = ^Cardinal;
RPC_BINDING_HANDLE = I_RPC_HANDLE;
{$EXTERNALSYM RPC_BINDING_HANDLE}
UUID = GUID;
{$EXTERNALSYM UUID}
PRPC_BINDING_HANDLE = ^RPC_BINDING_HANDLE;
{$NODEFINE PRPC_BINDING_HANDLE}
PUUID = ^UUID;
{$NODEFINE PUUID}
LPUUID = ^UUID;
{$NODEFINE LPUUID}
type
PRPC_BINDING_VECTOR = ^RPC_BINDING_VECTOR;
{$NODEFINE PRPC_BINDING_VECTOR}
_RPC_BINDING_VECTOR = record
Count: Cardinal;
BindingH: array [0..0] of RPC_BINDING_HANDLE;
end;
{$EXTERNALSYM _RPC_BINDING_VECTOR}
RPC_BINDING_VECTOR = _RPC_BINDING_VECTOR;
{$EXTERNALSYM RPC_BINDING_VECTOR}
TRpcBindingVector = RPC_BINDING_VECTOR;
PRpcBindingVector = PRPC_BINDING_VECTOR;
PUUID_VECTOR = ^UUID_VECTOR;
{$NODEFINE PUUID_VECTOR}
_UUID_VECTOR = record
Count: Cardinal;
Uuid: array [0..0] of PUUID;
end;
{$EXTERNALSYM _UUID_VECTOR}
UUID_VECTOR = _UUID_VECTOR;
{$EXTERNALSYM UUID_VECTOR}
TUuidVector = UUID_VECTOR;
PUuidVector = ^TUuidVector;
RPC_IF_HANDLE = LPVOID;
{$EXTERNALSYM RPC_IF_HANDLE}
PRPC_IF_ID = ^RPC_IF_ID;
{$NODEFINE PRPC_IF_ID}
_RPC_IF_ID = record
Uuid: UUID;
VersMajor: Word;
VersMinor: Word;
end;
{$EXTERNALSYM _RPC_IF_ID}
RPC_IF_ID = _RPC_IF_ID;
{$EXTERNALSYM RPC_IF_ID}
TRpcIfId = RPC_IF_ID;
PRpcIfId = ^TRpcIfId;
const
RPC_C_BINDING_INFINITE_TIMEOUT = 10;
{$EXTERNALSYM RPC_C_BINDING_INFINITE_TIMEOUT}
RPC_C_BINDING_MIN_TIMEOUT = 0;
{$EXTERNALSYM RPC_C_BINDING_MIN_TIMEOUT}
RPC_C_BINDING_DEFAULT_TIMEOUT = 5;
{$EXTERNALSYM RPC_C_BINDING_DEFAULT_TIMEOUT}
RPC_C_BINDING_MAX_TIMEOUT = 9;
{$EXTERNALSYM RPC_C_BINDING_MAX_TIMEOUT}
RPC_C_CANCEL_INFINITE_TIMEOUT = DWORD(-1);
{$EXTERNALSYM RPC_C_CANCEL_INFINITE_TIMEOUT}
RPC_C_LISTEN_MAX_CALLS_DEFAULT = 1234;
{$EXTERNALSYM RPC_C_LISTEN_MAX_CALLS_DEFAULT}
RPC_C_PROTSEQ_MAX_REQS_DEFAULT = 10;
{$EXTERNALSYM RPC_C_PROTSEQ_MAX_REQS_DEFAULT}
// RPC_POLICY EndpointFlags.
RPC_C_BIND_TO_ALL_NICS = 1;
{$EXTERNALSYM RPC_C_BIND_TO_ALL_NICS}
RPC_C_USE_INTERNET_PORT = $1;
{$EXTERNALSYM RPC_C_USE_INTERNET_PORT}
RPC_C_USE_INTRANET_PORT = $2;
{$EXTERNALSYM RPC_C_USE_INTRANET_PORT}
RPC_C_DONT_FAIL = $4;
{$EXTERNALSYM RPC_C_DONT_FAIL}
// RPC_POLICY EndpointFlags specific to the Falcon/RPC transport:
RPC_C_MQ_TEMPORARY = $0000;
{$EXTERNALSYM RPC_C_MQ_TEMPORARY}
RPC_C_MQ_PERMANENT = $0001;
{$EXTERNALSYM RPC_C_MQ_PERMANENT}
RPC_C_MQ_CLEAR_ON_OPEN = $0002;
{$EXTERNALSYM RPC_C_MQ_CLEAR_ON_OPEN}
RPC_C_MQ_USE_EXISTING_SECURITY = $0004;
{$EXTERNALSYM RPC_C_MQ_USE_EXISTING_SECURITY}
RPC_C_MQ_AUTHN_LEVEL_NONE = $0000;
{$EXTERNALSYM RPC_C_MQ_AUTHN_LEVEL_NONE}
RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY = $0008;
{$EXTERNALSYM RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY}
RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY = $0010;
{$EXTERNALSYM RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY}
// Client: RpcBindingSetOption() values for the Falcon/RPC transport:
RPC_C_OPT_MQ_DELIVERY = 1;
{$EXTERNALSYM RPC_C_OPT_MQ_DELIVERY}
RPC_C_OPT_MQ_PRIORITY = 2;
{$EXTERNALSYM RPC_C_OPT_MQ_PRIORITY}
RPC_C_OPT_MQ_JOURNAL = 3;
{$EXTERNALSYM RPC_C_OPT_MQ_JOURNAL}
RPC_C_OPT_MQ_ACKNOWLEDGE = 4;
{$EXTERNALSYM RPC_C_OPT_MQ_ACKNOWLEDGE}
RPC_C_OPT_MQ_AUTHN_SERVICE = 5;
{$EXTERNALSYM RPC_C_OPT_MQ_AUTHN_SERVICE}
RPC_C_OPT_MQ_AUTHN_LEVEL = 6;
{$EXTERNALSYM RPC_C_OPT_MQ_AUTHN_LEVEL}
RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE = 7;
{$EXTERNALSYM RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE}
RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED = 8;
{$EXTERNALSYM RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED}
RPC_C_OPT_BINDING_NONCAUSAL = 9;
{$EXTERNALSYM RPC_C_OPT_BINDING_NONCAUSAL}
RPC_C_OPT_SECURITY_CALLBACK = 10;
{$EXTERNALSYM RPC_C_OPT_SECURITY_CALLBACK}
RPC_C_OPT_UNIQUE_BINDING = 11;
{$EXTERNALSYM RPC_C_OPT_UNIQUE_BINDING}
RPC_C_OPT_MAX_OPTIONS = 12;
{$EXTERNALSYM RPC_C_OPT_MAX_OPTIONS}
RPC_C_MQ_EXPRESS = 0; // Client: RPC_C_MQ_DELIVERY.
{$EXTERNALSYM RPC_C_MQ_EXPRESS}
RPC_C_MQ_RECOVERABLE = 1;
{$EXTERNALSYM RPC_C_MQ_RECOVERABLE}
RPC_C_MQ_JOURNAL_NONE = 0; // Client: RPC_C_MQ_JOURNAL.
{$EXTERNALSYM RPC_C_MQ_JOURNAL_NONE}
RPC_C_MQ_JOURNAL_DEADLETTER = 1;
{$EXTERNALSYM RPC_C_MQ_JOURNAL_DEADLETTER}
RPC_C_MQ_JOURNAL_ALWAYS = 2;
{$EXTERNALSYM RPC_C_MQ_JOURNAL_ALWAYS}
// flags for RpcServerInqAuthClientEx
RPC_C_FULL_CERT_CHAIN = $0001;
{$EXTERNALSYM RPC_C_FULL_CERT_CHAIN}
type
PRPC_PROTSEQ_VECTORA = ^RPC_PROTSEQ_VECTORA;
{$NODEFINE PRPC_PROTSEQ_VECTORA}
_RPC_PROTSEQ_VECTORA = record
Count: Cardinal;
Protseq: array [0..0] of PByte
end;
{$EXTERNALSYM _RPC_PROTSEQ_VECTORA}
RPC_PROTSEQ_VECTORA = _RPC_PROTSEQ_VECTORA;
{$EXTERNALSYM RPC_PROTSEQ_VECTORA}
TRpcProtSeqVectorA = RPC_PROTSEQ_VECTORA;
PRpcProtSeqVectorA = PRPC_PROTSEQ_VECTORA;
PRPC_PROTSEQ_VECTORW = ^RPC_PROTSEQ_VECTORW;
{$NODEFINE PRPC_PROTSEQ_VECTORW}
_RPC_PROTSEQ_VECTORW = record
Count: Cardinal;
Protseq: array [0..0] of PWord;
end;
{$EXTERNALSYM _RPC_PROTSEQ_VECTORW}
RPC_PROTSEQ_VECTORW = _RPC_PROTSEQ_VECTORW;
{$EXTERNALSYM RPC_PROTSEQ_VECTORW}
TRpcProtSeqVectorW = RPC_PROTSEQ_VECTORW;
PRpcProtSeqVectorW = PRPC_PROTSEQ_VECTORW;
{$IFDEF UNICODE}
RPC_PROTSEQ_VECTOR = RPC_PROTSEQ_VECTORW;
{$EXTERNALSYM RPC_PROTSEQ_VECTOR}
TRpcProtSeqVector = TRpcProtSeqVectorW;
PRpcProtSeqVector = PRpcProtSeqVectorW;
{$ELSE}
RPC_PROTSEQ_VECTOR = RPC_PROTSEQ_VECTORA;
{$EXTERNALSYM RPC_PROTSEQ_VECTOR}
TRpcProtSeqVector = TRpcProtSeqVectorA;
PRpcProtSeqVector = PRpcProtSeqVectorA;
{$ENDIF}
PRPC_POLICY = ^RPC_POLICY;
{$EXTERNALSYM PRPC_POLICY}
_RPC_POLICY = record
Length: Cardinal;
EndpointFlags: Cardinal;
NICFlags: Cardinal;
end;
{$EXTERNALSYM _RPC_POLICY}
RPC_POLICY = _RPC_POLICY;
{$EXTERNALSYM RPC_POLICY}
TRpcPolicy = RPC_POLICY;
PRpcPolicy = PRPC_POLICY;
RPC_OBJECT_INQ_FN = procedure (const ObjectUuid: UUID; var TypeUuid: UUID;
var Status: RPC_STATUS); stdcall;
{$EXTERNALSYM RPC_OBJECT_INQ_FN}
TRpcObjectInqFn = RPC_OBJECT_INQ_FN;
RPC_IF_CALLBACK_FN = function (InterfaceUuid: RPC_IF_HANDLE; Context: Pointer): RPC_STATUS; stdcall;
{$EXTERNALSYM RPC_IF_CALLBACK_FN}
TRpcIfCallbackFn = RPC_IF_CALLBACK_FN;
RPC_SECURITY_CALLBACK_FN = procedure (Context: Pointer); stdcall;
{$EXTERNALSYM RPC_SECURITY_CALLBACK_FN}
TRpcSecurityCallbackFn = RPC_SECURITY_CALLBACK_FN;
PRPC_STATS_VECTOR = ^RPC_STATS_VECTOR;
{$NODEFINE PRPC_STATS_VECTOR}
RPC_STATS_VECTOR = record
Count: Cardinal;
Stats: array [0..0] of Cardinal;
end;
{$EXTERNALSYM RPC_STATS_VECTOR}
TRpcStatsVector = RPC_STATS_VECTOR;
PRpcStatsVector = PRPC_STATS_VECTOR;
const
RPC_C_STATS_CALLS_IN = 0;
{$EXTERNALSYM RPC_C_STATS_CALLS_IN}
RPC_C_STATS_CALLS_OUT = 1;
{$EXTERNALSYM RPC_C_STATS_CALLS_OUT}
RPC_C_STATS_PKTS_IN = 2;
{$EXTERNALSYM RPC_C_STATS_PKTS_IN}
RPC_C_STATS_PKTS_OUT = 3;
{$EXTERNALSYM RPC_C_STATS_PKTS_OUT}
type
PRPC_IF_ID_VECTOR = ^RPC_IF_ID_VECTOR;
{$NODEFINE RPC_IF_ID_VECTOR}
RPC_IF_ID_VECTOR = record
Count: Cardinal;
IfId: array [0..0] of PRpcIfId;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -