📄 jwanspapi.pas
字号:
{$EXTERNALSYM _SERVICE_TYPE_INFO_ABSW}
SERVICE_TYPE_INFO_ABSW = _SERVICE_TYPE_INFO_ABSW;
{$EXTERNALSYM SERVICE_TYPE_INFO_ABSW}
TServiceTypeInfoAbsW = SERVICE_TYPE_INFO_ABSW;
PServiceTypeInfoAbsW = LPSERVICE_TYPE_INFO_ABSW;
{$IFDEF UNICODE}
SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSW;
{$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSW;
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSW;
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
TServiceTypeInfoAbs = TServiceTypeInfoAbsW;
PServiceTypeInfoAbs = PServiceTypeInfoAbsW;
{$ELSE}
SERVICE_TYPE_INFO_ABS = SERVICE_TYPE_INFO_ABSA;
{$EXTERNALSYM SERVICE_TYPE_INFO_ABS}
PSERVICE_TYPE_INFO_ABS = PSERVICE_TYPE_INFO_ABSA;
{$EXTERNALSYM PSERVICE_TYPE_INFO_ABS}
LPSERVICE_TYPE_INFO_ABS = LPSERVICE_TYPE_INFO_ABSA;
{$EXTERNALSYM LPSERVICE_TYPE_INFO_ABS}
TServiceTypeInfoAbs = TServiceTypeInfoAbsA;
PServiceTypeInfoAbs = PServiceTypeInfoAbsA;
{$ENDIF}
//
// A Single Address definition.
//
LPSERVICE_ADDRESS = ^SERVICE_ADDRESS;
{$EXTERNALSYM LPSERVICE_ADDRESS}
PSERVICE_ADDRESS = ^SERVICE_ADDRESS;
{$EXTERNALSYM PSERVICE_ADDRESS}
_SERVICE_ADDRESS = record
dwAddressType: DWORD;
dwAddressFlags: DWORD;
dwAddressLength: DWORD;
dwPrincipalLength: DWORD;
lpAddress: LPBYTE;
lpPrincipal: LPBYTE;
end;
{$EXTERNALSYM _SERVICE_ADDRESS}
SERVICE_ADDRESS = _SERVICE_ADDRESS;
{$EXTERNALSYM SERVICE_ADDRESS}
TServiceAddress = SERVICE_ADDRESS;
PServiceAddress = LPSERVICE_ADDRESS;
//
// Addresses used by the service. Contains array of SERVICE_ADDRESS.
//
LPSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
{$EXTERNALSYM LPSERVICE_ADDRESSES}
PSERVICE_ADDRESSES = ^SERVICE_ADDRESSES;
{$EXTERNALSYM PSERVICE_ADDRESSES}
_SERVICE_ADDRESSES = record
dwAddressCount: DWORD;
Addresses: array [0..0] of SERVICE_ADDRESS;
end;
{$EXTERNALSYM _SERVICE_ADDRESSES}
SERVICE_ADDRESSES = _SERVICE_ADDRESSES;
{$EXTERNALSYM SERVICE_ADDRESSES}
TServiceAddresses = SERVICE_ADDRESSES;
PServiceAddresses = PSERVICE_ADDRESSES;
//
// Service Information.
//
LPSERVICE_INFOA = ^SERVICE_INFOA;
{$EXTERNALSYM LPSERVICE_INFOA}
PSERVICE_INFOA = ^SERVICE_INFOA;
{$EXTERNALSYM PSERVICE_INFOA}
_SERVICE_INFOA = record
lpServiceType: PGUID;
lpServiceName: LPSTR;
lpComment: LPSTR;
lpLocale: LPSTR;
dwDisplayHint: DWORD;
dwVersion: DWORD;
dwTime: DWORD;
lpMachineName: LPSTR;
lpServiceAddress: LPSERVICE_ADDRESSES;
ServiceSpecificInfo: BLOB;
end;
{$EXTERNALSYM _SERVICE_INFOA}
SERVICE_INFOA = _SERVICE_INFOA;
{$EXTERNALSYM SERVICE_INFOA}
TServiceInfoA = SERVICE_INFOA;
PServiceInfoA = PSERVICE_INFOA;
//
// Service Information.
//
LPSERVICE_INFOW = ^SERVICE_INFOW;
{$EXTERNALSYM LPSERVICE_INFOW}
PSERVICE_INFOW = ^SERVICE_INFOW;
{$EXTERNALSYM PSERVICE_INFOW}
_SERVICE_INFOW = record
lpServiceType: PGUID;
lpServiceName: LPWSTR;
lpComment: LPWSTR;
lpLocale: LPWSTR;
dwDisplayHint: DWORD;
dwVersion: DWORD;
dwTime: DWORD;
lpMachineName: LPWSTR;
lpServiceAddress: LPSERVICE_ADDRESSES;
ServiceSpecificInfo: BLOB;
end;
{$EXTERNALSYM _SERVICE_INFOW}
SERVICE_INFOW = _SERVICE_INFOW;
{$EXTERNALSYM SERVICE_INFOW}
TServiceInfoW = SERVICE_INFOW;
PServiceInfoW = PSERVICE_INFOW;
{$IFDEF UNICODE}
SERVICE_INFO = SERVICE_INFOW;
{$EXTERNALSYM SERVICE_INFO}
PSERVICE_INFO = PSERVICE_INFOW;
{$EXTERNALSYM PSERVICE_INFO}
LPSERVICE_INFO = LPSERVICE_INFOW;
{$EXTERNALSYM LPSERVICE_INFO}
TServiceInfo = TServiceInfoW;
PServiceInfo = PServiceInfoW;
{$ELSE}
SERVICE_INFO = SERVICE_INFOA;
{$EXTERNALSYM SERVICE_INFO}
PSERVICE_INFO = PSERVICE_INFOA;
{$EXTERNALSYM PSERVICE_INFO}
LPSERVICE_INFO = LPSERVICE_INFOA;
{$EXTERNALSYM LPSERVICE_INFO}
TServiceInfo = TServiceInfoA;
PServiceInfo = PServiceInfoA;
{$ENDIF}
//
// Name Space & Service Information
//
LPNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
{$EXTERNALSYM LPNS_SERVICE_INFOA}
PNS_SERVICE_INFOA = ^NS_SERVICE_INFOA;
{$EXTERNALSYM PNS_SERVICE_INFOA}
_NS_SERVICE_INFOA = record
dwNameSpace: DWORD;
ServiceInfo: SERVICE_INFOA;
end;
{$EXTERNALSYM _NS_SERVICE_INFOA}
NS_SERVICE_INFOA = _NS_SERVICE_INFOA;
{$EXTERNALSYM NS_SERVICE_INFOA}
TNsServiceInfoA = NS_SERVICE_INFOA;
PNsServiceInfoA = LPNS_SERVICE_INFOA;
//
// Name Space & Service Information
//
LPNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
{$EXTERNALSYM LPNS_SERVICE_INFOW}
PNS_SERVICE_INFOW = ^NS_SERVICE_INFOW;
{$EXTERNALSYM PNS_SERVICE_INFOW}
_NS_SERVICE_INFOW = record
dwNameSpace: DWORD;
ServiceInfo: SERVICE_INFOW;
end;
{$EXTERNALSYM _NS_SERVICE_INFOW}
NS_SERVICE_INFOW = _NS_SERVICE_INFOW;
{$EXTERNALSYM NS_SERVICE_INFOW}
TNsServiceInfoW = NS_SERVICE_INFOW;
PNsServiceInfoW = LPNS_SERVICE_INFOW;
{$IFDEF UNICODE}
NS_SERVICE_INFO = NS_SERVICE_INFOW;
{$EXTERNALSYM NS_SERVICE_INFO}
PNS_SERVICE_INFO = PNS_SERVICE_INFOW;
{$EXTERNALSYM PNS_SERVICE_INFO}
LPNS_SERVICE_INFO = LPNS_SERVICE_INFOW;
{$EXTERNALSYM LPNS_SERVICE_INFO}
TNsServiceInfo = TNsServiceInfoW;
PNsServiceInfo = PNsServiceInfoW;
{$ELSE}
NS_SERVICE_INFO = NS_SERVICE_INFOA;
{$EXTERNALSYM NS_SERVICE_INFO}
PNS_SERVICE_INFO = PNS_SERVICE_INFOA;
{$EXTERNALSYM PNS_SERVICE_INFO}
LPNS_SERVICE_INFO = LPNS_SERVICE_INFOA;
{$EXTERNALSYM LPNS_SERVICE_INFO}
TNsServiceInfo = TNsServiceInfoA;
PNsServiceInfo = PNsServiceInfoA;
{$ENDIF}
//
// SockAddr Information
//
LPSOCKET_ADDRESS = ^SOCKET_ADDRESS;
{$EXTERNALSYM LPSOCKET_ADDRESS}
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
{$EXTERNALSYM PSOCKET_ADDRESS}
_SOCKET_ADDRESS = record
lpSockaddr: LPSOCKADDR;
iSockaddrLength: Integer;
end;
{$EXTERNALSYM _SOCKET_ADDRESS}
SOCKET_ADDRESS = _SOCKET_ADDRESS;
{$EXTERNALSYM SOCKET_ADDRESS}
TSocketAddress = SOCKET_ADDRESS;
PSocketAddress = PSOCKET_ADDRESS;
//
// CSAddr Information
//
LPCSADDR_INFO = ^CSADDR_INFO;
{$EXTERNALSYM LPCSADDR_INFO}
PCSADDR_INFO = ^CSADDR_INFO;
{$EXTERNALSYM PCSADDR_INFO}
_CSADDR_INFO = record
LocalAddr: SOCKET_ADDRESS;
RemoteAddr: SOCKET_ADDRESS;
iSocketType: Integer;
iProtocol: Integer;
end;
{$EXTERNALSYM _CSADDR_INFO}
CSADDR_INFO = _CSADDR_INFO;
{$EXTERNALSYM CSADDR_INFO}
TCsAddrInfo = CSADDR_INFO;
PCsAddrInfo = LPCSADDR_INFO;
//
// Protocol Information
//
LPPROTOCOL_INFOA = ^PROTOCOL_INFOA;
{$EXTERNALSYM LPPROTOCOL_INFOA}
PPROTOCOL_INFOA = ^PROTOCOL_INFOA;
{$EXTERNALSYM PPROTOCOL_INFOA}
_PROTOCOL_INFOA = record
dwServiceFlags: DWORD;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
dwMessageSize: DWORD;
lpProtocol: LPSTR;
end;
{$EXTERNALSYM _PROTOCOL_INFOA}
PROTOCOL_INFOA = _PROTOCOL_INFOA;
{$EXTERNALSYM PROTOCOL_INFOA}
TProtocolInfoA = PROTOCOL_INFOA;
PProtocolInfoA = LPPROTOCOL_INFOA;
//
// Protocol Information
//
LPPROTOCOL_INFOW = ^PROTOCOL_INFOW;
{$EXTERNALSYM LPPROTOCOL_INFOW}
PPROTOCOL_INFOW = ^PROTOCOL_INFOW;
{$EXTERNALSYM PPROTOCOL_INFOW}
_PROTOCOL_INFOW = record
dwServiceFlags: DWORD;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
dwMessageSize: DWORD;
lpProtocol: LPWSTR;
end;
{$EXTERNALSYM _PROTOCOL_INFOW}
PROTOCOL_INFOW = _PROTOCOL_INFOW;
{$EXTERNALSYM PROTOCOL_INFOW}
TProtocolInfoW = PROTOCOL_INFOW;
PProtocolInfoW = LPPROTOCOL_INFOW;
{$IFDEF UNICODE}
PROTOCOL_INFO = PROTOCOL_INFOW;
{$EXTERNALSYM PROTOCOL_INFO}
PPROTOCOL_INFO = PPROTOCOL_INFOW;
{$EXTERNALSYM PPROTOCOL_INFO}
LPPROTOCOL_INFO = LPPROTOCOL_INFOW;
{$EXTERNALSYM LPPROTOCOL_INFO}
TProtocolInfo = TProtocolInfoW;
PProtocolInfo = PProtocolInfoW;
{$ELSE}
PROTOCOL_INFO = PROTOCOL_INFOA;
{$EXTERNALSYM PROTOCOL_INFO}
PPROTOCOL_INFO = PPROTOCOL_INFOA;
{$EXTERNALSYM PPROTOCOL_INFO}
LPPROTOCOL_INFO = LPPROTOCOL_INFOA;
{$EXTERNALSYM LPPROTOCOL_INFO}
TProtocolInfo = TProtocolInfoA;
PProtocolInfo = PProtocolInfoA;
{$ENDIF}
//
// NETRESOURCE2 Structure
//
LPNETRESOURCE2A = ^NETRESOURCE2A;
{$EXTERNALSYM LPNETRESOURCE2A}
PNETRESOURCE2A = ^NETRESOURCE2A;
{$EXTERNALSYM PNETRESOURCE2A}
_NETRESOURCE2A = record
dwScope: DWORD;
dwType: DWORD;
dwUsage: DWORD;
dwDisplayType: DWORD;
lpLocalName: LPSTR;
lpRemoteName: LPSTR;
lpComment: LPSTR;
ns_info: NS_INFO;
ServiceType: TGUID;
dwProtocols: DWORD;
lpiProtocols: PINT;
end;
{$EXTERNALSYM _NETRESOURCE2A}
NETRESOURCE2A = _NETRESOURCE2A;
{$EXTERNALSYM NETRESOURCE2A}
TNetResource2A = NETRESOURCE2A;
//
// NETRESOURCE2 Structure
//
LPNETRESOURCE2W = ^NETRESOURCE2W;
{$EXTERNALSYM LPNETRESOURCE2W}
PNETRESOURCE2W = ^NETRESOURCE2W;
{$EXTERNALSYM PNETRESOURCE2W}
_NETRESOURCE2W = record
dwScope: DWORD;
dwType: DWORD;
dwUsage: DWORD;
dwDisplayType: DWORD;
lpLocalName: LPWSTR;
lpRemoteName: LPWSTR;
lpComment: LPWSTR;
ns_info: NS_INFO;
ServiceType: TGUID;
dwProtocols: DWORD;
lpiProtocols: PINT;
end;
{$EXTERNALSYM _NETRESOURCE2W}
NETRESOURCE2W = _NETRESOURCE2W;
{$EXTERNALSYM NETRESOURCE2W}
TNetResource2W = NETRESOURCE2W;
{$IFDEF UNICODE}
NETRESOURCE2 = NETRESOURCE2W;
{$EXTERNALSYM NETRESOURCE2}
PNETRESOURCE2 = PNETRESOURCE2W;
{$EXTERNALSYM PNETRESOURCE2}
LPNETRESOURCE2 = LPNETRESOURCE2W;
{$EXTERNALSYM LPNETRESOURCE2}
TNetResource2 = TNetResource2W;
{$ELSE}
NETRESOURCE2 = NETRESOURCE2A;
{$EXTERNALSYM NETRESOURCE2}
PNETRESOURCE2 = PNETRESOURCE2A;
{$EXTERNALSYM PNETRESOURCE2}
LPNETRESOURCE2 = LPNETRESOURCE2A;
{$EXTERNALSYM LPNETRESOURCE2}
TNetResource2 = TNetResource2A;
{$ENDIF}
LPFN_NSPAPI = function: DWORD; stdcall;
{$EXTERNALSYM LPFN_NSPAPI}
TFnNspApi = LPFN_NSPAPI;
//
// Structures for using the service routines asynchronously.
//
type
LPSERVICE_CALLBACK_PROC = procedure (lParam: LPARAM; hAsyncTaskHandle: HANDLE); stdcall;
{$EXTERNALSYM LPSERVICE_CALLBACK_PROC}
TServiceCallbackProc = LPSERVICE_CALLBACK_PROC;
type
LPSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
{$EXTERNALSYM LPSERVICE_ASYNC_INFO}
PSERVICE_ASYNC_INFO = ^SERVICE_ASYNC_INFO;
{$EXTERNALSYM PSERVICE_ASYNC_INFO}
_SERVICE_ASYNC_INFO = record
lpServiceCallbackProc: LPSERVICE_CALLBACK_PROC;
lParam: LPARAM;
hAsyncTaskHandle: HANDLE;
end;
{$EXTERNALSYM _SERVICE_ASYNC_INFO}
SERVICE_ASYNC_INFO = _SERVICE_ASYNC_INFO;
{$EXTERNALSYM SERVICE_ASYNC_INFO}
TServiceAsyncInfo = SERVICE_ASYNC_INFO;
PServiceAsyncInfo = LPSERVICE_ASYNC_INFO;
//
// Public NSP API prototypes.
//
function EnumProtocolsA(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM EnumProtocolsA}
function EnumProtocolsW(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM EnumProtocolsW}
{$IFDEF UNICODE}
function EnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM EnumProtocols}
{$ELSE}
function EnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPVOID; lpdwBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM EnumProtocols}
{$ENDIF}
function GetAddressByNameA(dwNameSpace: DWORD; const lpServiceType: TGUID;
lpServiceName: LPSTR; lpiProtocols: PINT; dwResolution: DWORD;
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
var lpdwBufferLength: DWORD; lpAliasBuffer: LPSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM GetAddressByNameA}
function GetAddressByNameW(dwNameSpace: DWORD; const lpServiceType: TGUID;
lpServiceName: LPWSTR; lpiProtocols: PINT; dwResolution: DWORD;
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
var lpdwBufferLength: DWORD; lpAliasBuffer: LPWSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM GetAddressByNameW}
{$IFDEF UNICODE}
function GetAddressByName(dwNameSpace: DWORD; const lpServiceType: TGUID;
lpServiceName: LPWSTR; lpiProtocols: PINT; dwResolution: DWORD;
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
var lpdwBufferLength: DWORD; lpAliasBuffer: LPWSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM GetAddressByName}
{$ELSE}
function GetAddressByName(dwNameSpace: DWORD; const lpServiceType: TGUID;
lpServiceName: LPSTR; lpiProtocols: PINT; dwResolution: DWORD;
lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO; lpCsaddrBuffer: LPVOID;
var lpdwBufferLength: DWORD; lpAliasBuffer: LPSTR; lpdwAliasBufferLength: LPDWORD): Integer; stdcall;
{$EXTERNALSYM GetAddressByName}
{$ENDIF}
function GetTypeByNameA(lpServiceName: LPSTR; var lpServiceType: TGUID): Integer; stdcall;
{$EXTERNALSYM GetTypeByNameA}
function GetTypeByNameW(lpServiceName: LPWSTR; var lpServiceType: TGUID): Integer; stdcall;
{$EXTERNALSYM GetTypeByNameW}
{$IFDEF UNICODE}
function GetTypeByName(lpServiceName: LPWSTR; var lpServiceType: TGUID): Integer; stdcall;
{$EXTERNALSYM GetTypeByName}
{$ELSE}
function GetTypeByName(lpServiceName: LPSTR; var lpServiceType: TGUID): Integer; stdcall;
{$EXTERNALSYM GetTypeByName}
{$ENDIF}
function GetNameByTypeA(const lpServiceType: TGUID; lpServiceName: LPSTR; dwNameLength: DWORD): Integer; stdcall;
{$EXTERNALSYM GetNameByTypeA}
function GetNameByTypeW(const lpServiceType: TGUID; lpServiceName: LPWSTR; dwNameLength: DWORD): Integer; stdcall;
{$EXTERNALSYM GetNameByTypeW}
{$IFDEF UNICODE}
function GetNameByType(const lpServiceType: TGUID; lpServiceName: LPWSTR; dwNameLength: DWORD): Integer; stdcall;
{$EXTERNALSYM GetNameByType}
{$ELSE}
function GetNameByType(const lpServiceType: TGUID; lpServiceName: LPSTR; dwNameLength: DWORD): Integer; stdcall;
{$EXTERNALSYM GetNameByType}
{$ENDIF}
function SetServiceA(dwNameSpace, dwOperation, dwFlags: DWORD;
const lpServiceInfo: SERVICE_INFOA; lpServiceAsyncInfo: LPSERVICE_ASYNC_INFO;
var lpdwStatusFlags: DWORD): Integer; stdcall;
{$EXTERNALSYM SetServiceA}
function SetServiceW(dwNameSpace, dwOperation, dwFlags: DWORD;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -