📄 jwarpcdce.pas
字号:
{$EXTERNALSYM RpcEpRegisterW}
{$IFDEF UNICODE}
function RpcEpRegister(IfSpec: RPC_IF_HANDLE; BindingVector: PRPC_BINDING_VECTOR;
UuidVector: PUUID_VECTOR; Annotation: PWideChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcEpRegister}
{$ELSE}
function RpcEpRegister(IfSpec: RPC_IF_HANDLE; BindingVector: PRPC_BINDING_VECTOR;
UuidVector: PUUID_VECTOR; Annotation: PChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcEpRegister}
{$ENDIF}
function RpcEpUnregister(IfSpec: RPC_IF_HANDLE; BindingVector: PRPC_BINDING_VECTOR;
UuidVector: UUID_VECTOR): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcEpUnregister}
function DceErrorInqTextA(RpcStatus: RPC_STATUS; ErrorText: PChar): RPC_STATUS; stdcall;
{$EXTERNALSYM DceErrorInqTextA}
function DceErrorInqTextW(RpcStatus: RPC_STATUS; ErrorText: PWideChar): RPC_STATUS; stdcall;
{$EXTERNALSYM DceErrorInqTextW}
{$IFDEF UNICODE}
function DceErrorInqText(RpcStatus: RPC_STATUS; ErrorText: PWideChar): RPC_STATUS; stdcall;
{$EXTERNALSYM DceErrorInqText}
{$ELSE}
function DceErrorInqText(RpcStatus: RPC_STATUS; ErrorText: PChar): RPC_STATUS; stdcall;
{$EXTERNALSYM DceErrorInqText}
{$ENDIF}
const
DCE_C_ERROR_STRING_LEN = 256;
{$EXTERNALSYM DCE_C_ERROR_STRING_LEN}
type
RPC_EP_INQ_HANDLE = ^I_RPC_HANDLE;
{$EXTERNALSYM RPC_EP_INQ_HANDLE}
const
RPC_C_EP_ALL_ELTS = 0;
{$EXTERNALSYM RPC_C_EP_ALL_ELTS}
RPC_C_EP_MATCH_BY_IF = 1;
{$EXTERNALSYM RPC_C_EP_MATCH_BY_IF}
RPC_C_EP_MATCH_BY_OBJ = 2;
{$EXTERNALSYM RPC_C_EP_MATCH_BY_OBJ}
RPC_C_EP_MATCH_BY_BOTH = 3;
{$EXTERNALSYM RPC_C_EP_MATCH_BY_BOTH}
RPC_C_VERS_ALL = 1;
{$EXTERNALSYM RPC_C_VERS_ALL}
RPC_C_VERS_COMPATIBLE = 2;
{$EXTERNALSYM RPC_C_VERS_COMPATIBLE}
RPC_C_VERS_EXACT = 3;
{$EXTERNALSYM RPC_C_VERS_EXACT}
RPC_C_VERS_MAJOR_ONLY = 4;
{$EXTERNALSYM RPC_C_VERS_MAJOR_ONLY}
RPC_C_VERS_UPTO = 5;
{$EXTERNALSYM RPC_C_VERS_UPTO}
function RpcMgmtEpEltInqBegin(EpBinding: RPC_BINDING_HANDLE; InquiryType: Cardinal;
IfId: PRPC_IF_ID; VersOption: Cardinal; ObjectUuid: PUUID;
var InquiryContext: RPC_EP_INQ_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqBegin}
function RpcMgmtEpEltInqDone(var InquiryContext: RPC_EP_INQ_HANDLE): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqDone}
function RpcMgmtEpEltInqNextA(InquiryContext: RPC_EP_INQ_HANDLE; var IfId: RPC_IF_ID;
Binding: PRPC_BINDING_HANDLE; ObjectUuid: PUUID; var Annotation: PChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqNextA}
function RpcMgmtEpEltInqNextW(InquiryContext: RPC_EP_INQ_HANDLE; var IfId: RPC_IF_ID;
Binding: PRPC_BINDING_HANDLE; ObjectUuid: PUUID; var Annotation: PWideChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqNextW}
{$IFDEF UNICODE}
function RpcMgmtEpEltInqNext(InquiryContext: RPC_EP_INQ_HANDLE; var IfId: RPC_IF_ID;
Binding: PRPC_BINDING_HANDLE; ObjectUuid: PUUID; var Annotation: PWideChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqNext}
{$ELSE}
function RpcMgmtEpEltInqNext(InquiryContext: RPC_EP_INQ_HANDLE; var IfId: RPC_IF_ID;
Binding: PRPC_BINDING_HANDLE; ObjectUuid: PUUID; var Annotation: PChar): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpEltInqNext}
{$ENDIF}
function RpcMgmtEpUnregister(EpBinding: RPC_BINDING_HANDLE; IfId: PRPC_IF_ID;
Binding: RPC_BINDING_HANDLE; ObjectUuid : PUUID): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtEpUnregister}
type
RPC_MGMT_AUTHORIZATION_FN = function (ClientBinding: RPC_BINDING_HANDLE;
RequestedMgmtOperation: Cardinal; var Status: RPC_STATUS): Integer; stdcall;
{$EXTERNALSYM RPC_MGMT_AUTHORIZATION_FN}
TRpcMgmtAuthorizationFn = RPC_MGMT_AUTHORIZATION_FN;
const
RPC_C_MGMT_INQ_IF_IDS = 0;
{$EXTERNALSYM RPC_C_MGMT_INQ_IF_IDS}
RPC_C_MGMT_INQ_PRINC_NAME = 1;
{$EXTERNALSYM RPC_C_MGMT_INQ_PRINC_NAME}
RPC_C_MGMT_INQ_STATS = 2;
{$EXTERNALSYM RPC_C_MGMT_INQ_STATS}
RPC_C_MGMT_IS_SERVER_LISTEN = 3;
{$EXTERNALSYM RPC_C_MGMT_IS_SERVER_LISTEN}
RPC_C_MGMT_STOP_SERVER_LISTEN = 4;
{$EXTERNALSYM RPC_C_MGMT_STOP_SERVER_LISTEN}
function RpcMgmtSetAuthorizationFn(AuthorizationFn: RPC_MGMT_AUTHORIZATION_FN): RPC_STATUS; stdcall;
{$EXTERNALSYM RpcMgmtSetAuthorizationFn}
const
RPC_C_PARM_MAX_PACKET_LENGTH = 1;
{$EXTERNALSYM RPC_C_PARM_MAX_PACKET_LENGTH}
RPC_C_PARM_BUFFER_LENGTH = 2;
{$EXTERNALSYM RPC_C_PARM_BUFFER_LENGTH}
RPC_IF_AUTOLISTEN = $0001;
{$EXTERNALSYM RPC_IF_AUTOLISTEN}
RPC_IF_OLE = $0002;
{$EXTERNALSYM RPC_IF_OLE}
RPC_IF_ALLOW_UNKNOWN_AUTHORITY = $0004;
{$EXTERNALSYM RPC_IF_ALLOW_UNKNOWN_AUTHORITY}
RPC_IF_ALLOW_SECURE_ONLY = $0008;
{$EXTERNALSYM RPC_IF_ALLOW_SECURE_ONLY}
RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH = $0010;
{$EXTERNALSYM RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH}
implementation
const
rpclib = 'rpcrt4.dll';
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingCopy: Pointer;
function RpcBindingCopy;
begin
GetProcedureAddress(_RpcBindingCopy, rpclib, 'RpcBindingCopy');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingCopy]
end;
end;
{$ELSE}
function RpcBindingCopy; external rpclib name 'RpcBindingCopy';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingFree: Pointer;
function RpcBindingFree;
begin
GetProcedureAddress(_RpcBindingFree, rpclib, 'RpcBindingFree');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingFree]
end;
end;
{$ELSE}
function RpcBindingFree; external rpclib name 'RpcBindingFree';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingSetOption: Pointer;
function RpcBindingSetOption;
begin
GetProcedureAddress(_RpcBindingSetOption, rpclib, 'RpcBindingSetOption');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingSetOption]
end;
end;
{$ELSE}
function RpcBindingSetOption; external rpclib name 'RpcBindingSetOption';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingInqOption: Pointer;
function RpcBindingInqOption;
begin
GetProcedureAddress(_RpcBindingInqOption, rpclib, 'RpcBindingInqOption');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingInqOption]
end;
end;
{$ELSE}
function RpcBindingInqOption; external rpclib name 'RpcBindingInqOption';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingFromStringBindingA: Pointer;
function RpcBindingFromStringBindingA;
begin
GetProcedureAddress(_RpcBindingFromStringBindingA, rpclib, 'RpcBindingFromStringBindingA');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingFromStringBindingA]
end;
end;
{$ELSE}
function RpcBindingFromStringBindingA; external rpclib name 'RpcBindingFromStringBindingA';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingFromStringBindingW: Pointer;
function RpcBindingFromStringBindingW;
begin
GetProcedureAddress(_RpcBindingFromStringBindingW, rpclib, 'RpcBindingFromStringBindingW');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingFromStringBindingW]
end;
end;
{$ELSE}
function RpcBindingFromStringBindingW; external rpclib name 'RpcBindingFromStringBindingW';
{$ENDIF DYNAMIC_LINK}
{$IFDEF UNICODE}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingFromStringBinding: Pointer;
function RpcBindingFromStringBinding;
begin
GetProcedureAddress(_RpcBindingFromStringBinding, rpclib, 'RpcBindingFromStringBindingW');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingFromStringBinding]
end;
end;
{$ELSE}
function RpcBindingFromStringBinding; external rpclib name 'RpcBindingFromStringBindingW';
{$ENDIF DYNAMIC_LINK}
{$ELSE}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingFromStringBinding: Pointer;
function RpcBindingFromStringBinding;
begin
GetProcedureAddress(_RpcBindingFromStringBinding, rpclib, 'RpcBindingFromStringBindingA');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingFromStringBinding]
end;
end;
{$ELSE}
function RpcBindingFromStringBinding; external rpclib name 'RpcBindingFromStringBindingA';
{$ENDIF DYNAMIC_LINK}
{$ENDIF}
{$IFDEF DYNAMIC_LINK}
var
_RpcSsGetContextBinding: Pointer;
function RpcSsGetContextBinding;
begin
GetProcedureAddress(_RpcSsGetContextBinding, rpclib, 'RpcSsGetContextBinding');
asm
mov esp, ebp
pop ebp
jmp [_RpcSsGetContextBinding]
end;
end;
{$ELSE}
function RpcSsGetContextBinding; external rpclib name 'RpcSsGetContextBinding';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingInqObject: Pointer;
function RpcBindingInqObject;
begin
GetProcedureAddress(_RpcBindingInqObject, rpclib, 'RpcBindingInqObject');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingInqObject]
end;
end;
{$ELSE}
function RpcBindingInqObject; external rpclib name 'RpcBindingInqObject';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingReset: Pointer;
function RpcBindingReset;
begin
GetProcedureAddress(_RpcBindingReset, rpclib, 'RpcBindingReset');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingReset]
end;
end;
{$ELSE}
function RpcBindingReset; external rpclib name 'RpcBindingReset';
{$ENDIF DYNAMIC_LINK}
{$IFDEF DYNAMIC_LINK}
var
_RpcBindingSetObject: Pointer;
function RpcBindingSetObject;
begin
GetProcedureAddress(_RpcBindingSetObject, rpclib, 'RpcBindingSetObject');
asm
mov esp, ebp
pop ebp
jmp [_RpcBindingSetObject]
end;
end;
{$ELSE}
function RpcBindingSetObject;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -