📄 jwarpcdce.pas
字号:
{******************************************************************************}
{ }
{ RPC DCE API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: rpcdce.h, released June 2000. The original Pascal }
{ code is: Rpcce.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ 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 or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ 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. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
unit JwaRpcDce;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$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 ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinNT, JwaWinType, JwaRpc;
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_CALL_TIMEOUT = 12;
{$EXTERNALSYM RPC_C_OPT_CALL_TIMEOUT}
RPC_C_OPT_DONT_LINGER = 13;
{$EXTERNALSYM RPC_C_OPT_DONT_LINGER}
RPC_C_OPT_MAX_OPTIONS = 14;
{$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;
{$EXTERNALSYM RPC_IF_ID_VECTOR}
TRpcIfIdVector = RPC_IF_ID_VECTOR;
PRpcIfIdVector = PRPC_IF_ID_VECTOR;
function RpcBindingCopy(SourceBinding: RPC_BINDING_HANDLE;
var DestinationBinding: RPC_BINDING_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingCopy}
function RpcBindingFree(var Binding: RPC_BINDING_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingFree}
function RpcBindingSetOption(hBinding: RPC_BINDING_HANDLE; option: Cardinal;
optionValue: ULONG_PTR): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingSetOption}
function RpcBindingInqOption(hBinding: RPC_BINDING_HANDLE; option: Cardinal;
var pOptionValue: ULONG_PTR): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingInqOption}
function RpcBindingFromStringBindingA(StringBinding: PChar;
var Binding: RPC_BINDING_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingFromStringBindingA}
function RpcBindingFromStringBindingW(StringBinding: PWideChar;
var Binding: RPC_BINDING_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcBindingFromStringBindingW}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -