Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _NSPAPI_INCLUDED
      7 #define _NSPAPI_INCLUDED
      8 
      9 #include <_mingw_unicode.h>
     10 
     11 #ifdef __cplusplus
     12 extern "C" {
     13 #endif
     14 
     15 #ifndef _tagBLOB_DEFINED
     16 #define _tagBLOB_DEFINED
     17 #define _BLOB_DEFINED
     18 #define _LPBLOB_DEFINED
     19   typedef struct _BLOB {
     20     ULONG cbSize;
     21     BYTE *pBlobData;
     22   } BLOB,*LPBLOB;
     23 #endif
     24 
     25 #ifndef GUID_DEFINED
     26 #define GUID_DEFINED
     27   typedef struct _GUID {
     28     unsigned __LONG32 Data1;
     29     unsigned short Data2;
     30     unsigned short Data3;
     31     unsigned char Data4[8];
     32   } GUID;
     33 #endif
     34 
     35 #ifndef __LPGUID_DEFINED__
     36 #define __LPGUID_DEFINED__
     37   typedef GUID *LPGUID;
     38 #endif
     39 
     40 #define SERVICE_RESOURCE (0x00000001)
     41 #define SERVICE_SERVICE (0x00000002)
     42 #define SERVICE_LOCAL (0x00000004)
     43 
     44 #define SERVICE_REGISTER (0x00000001)
     45 #define SERVICE_DEREGISTER (0x00000002)
     46 #define SERVICE_FLUSH (0x00000003)
     47 #define SERVICE_ADD_TYPE (0x00000004)
     48 #define SERVICE_DELETE_TYPE (0x00000005)
     49 
     50 #define SERVICE_FLAG_DEFER (0x00000001)
     51 #define SERVICE_FLAG_HARD (0x00000002)
     52 
     53 #define PROP_COMMENT (0x00000001)
     54 #define PROP_LOCALE (0x00000002)
     55 #define PROP_DISPLAY_HINT (0x00000004)
     56 #define PROP_VERSION (0x00000008)
     57 #define PROP_START_TIME (0x00000010)
     58 #define PROP_MACHINE (0x00000020)
     59 #define PROP_ADDRESSES (0x00000100)
     60 #define PROP_SD (0x00000200)
     61 #define PROP_ALL (0x80000000)
     62 
     63 #define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001)
     64 #define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002)
     65 #define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004)
     66 
     67 #define NS_DEFAULT (0)
     68 
     69 #define NS_SAP (1)
     70 #define NS_NDS (2)
     71 #define NS_PEER_BROWSE (3)
     72 
     73 #define NS_TCPIP_LOCAL (10)
     74 #define NS_TCPIP_HOSTS (11)
     75 #define NS_DNS (12)
     76 #define NS_NETBT (13)
     77 #define NS_WINS (14)
     78 #define NS_NLA (15)
     79 #if (_WIN32_WINNT >= 0x0600)
     80 #define NS_BTH (16)
     81 #endif
     82 
     83 #define NS_NBP (20)
     84 
     85 #define NS_MS (30)
     86 #define NS_STDA (31)
     87 #define NS_NTDS (32)
     88 
     89 #if (_WIN32_WINNT >= 0x0600)
     90 #define NS_EMAIL (37)
     91 #define NS_PNRPNAME (38)
     92 #define NS_PNRPCLOUD (39)
     93 #endif
     94 
     95 #define NS_X500 (40)
     96 #define NS_NIS (41)
     97 
     98 #define NS_VNS (50)
     99 
    100 #define NSTYPE_HIERARCHICAL (0x00000001)
    101 #define NSTYPE_DYNAMIC (0x00000002)
    102 #define NSTYPE_ENUMERABLE (0x00000004)
    103 #define NSTYPE_WORKGROUP (0x00000008)
    104 
    105 #define XP_CONNECTIONLESS (0x00000001)
    106 #define XP_GUARANTEED_DELIVERY (0x00000002)
    107 #define XP_GUARANTEED_ORDER (0x00000004)
    108 #define XP_MESSAGE_ORIENTED (0x00000008)
    109 #define XP_PSEUDO_STREAM (0x00000010)
    110 #define XP_GRACEFUL_CLOSE (0x00000020)
    111 #define XP_EXPEDITED_DATA (0x00000040)
    112 #define XP_CONNECT_DATA (0x00000080)
    113 #define XP_DISCONNECT_DATA (0x00000100)
    114 #define XP_SUPPORTS_BROADCAST (0x00000200)
    115 #define XP_SUPPORTS_MULTICAST (0x00000400)
    116 #define XP_BANDWIDTH_ALLOCATION (0x00000800)
    117 #define XP_FRAGMENTATION (0x00001000)
    118 #define XP_ENCRYPTS (0x00002000)
    119 
    120 #define RES_SOFT_SEARCH (0x00000001)
    121 #define RES_FIND_MULTIPLE (0x00000002)
    122 #define RES_SERVICE (0x00000004)
    123 
    124 #define SERVICE_TYPE_VALUE_SAPIDA "SapId"
    125 #define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
    126 
    127 #define SERVICE_TYPE_VALUE_CONNA "ConnectionOriented"
    128 #define SERVICE_TYPE_VALUE_CONNW L"ConnectionOriented"
    129 
    130 #define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
    131 #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
    132 
    133 #define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
    134 #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
    135 
    136 #define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID)
    137 #define SERVICE_TYPE_VALUE_CONN __MINGW_NAME_AW(SERVICE_TYPE_VALUE_CONN)
    138 #define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT)
    139 #define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT)
    140 
    141 #define SET_SERVICE_PARTIAL_SUCCESS (0x00000001)
    142 
    143   typedef struct _NS_INFOA {
    144     DWORD dwNameSpace;
    145     DWORD dwNameSpaceFlags;
    146     LPSTR lpNameSpace;
    147   } NS_INFOA,*PNS_INFOA,*LPNS_INFOA;
    148 
    149   typedef struct _NS_INFOW {
    150     DWORD dwNameSpace;
    151     DWORD dwNameSpaceFlags;
    152     LPWSTR lpNameSpace;
    153   } NS_INFOW,*PNS_INFOW,*LPNS_INFOW;
    154 
    155   __MINGW_TYPEDEF_AW(NS_INFO)
    156   __MINGW_TYPEDEF_AW(PNS_INFO)
    157   __MINGW_TYPEDEF_AW(LPNS_INFO)
    158 
    159   typedef struct _SERVICE_TYPE_VALUE {
    160     DWORD dwNameSpace;
    161     DWORD dwValueType;
    162     DWORD dwValueSize;
    163     DWORD dwValueNameOffset;
    164     DWORD dwValueOffset;
    165   } SERVICE_TYPE_VALUE,*PSERVICE_TYPE_VALUE,*LPSERVICE_TYPE_VALUE;
    166 
    167   typedef struct _SERVICE_TYPE_VALUE_ABSA {
    168     DWORD dwNameSpace;
    169     DWORD dwValueType;
    170     DWORD dwValueSize;
    171     LPSTR lpValueName;
    172     PVOID lpValue;
    173   } SERVICE_TYPE_VALUE_ABSA,*PSERVICE_TYPE_VALUE_ABSA,*LPSERVICE_TYPE_VALUE_ABSA;
    174 
    175   typedef struct _SERVICE_TYPE_VALUE_ABSW {
    176     DWORD dwNameSpace;
    177     DWORD dwValueType;
    178     DWORD dwValueSize;
    179     LPWSTR lpValueName;
    180     PVOID lpValue;
    181   } SERVICE_TYPE_VALUE_ABSW,*PSERVICE_TYPE_VALUE_ABSW,*LPSERVICE_TYPE_VALUE_ABSW;
    182 
    183   __MINGW_TYPEDEF_AW(SERVICE_TYPE_VALUE_ABS)
    184   __MINGW_TYPEDEF_AW(PSERVICE_TYPE_VALUE_ABS)
    185   __MINGW_TYPEDEF_AW(LPSERVICE_TYPE_VALUE_ABS)
    186 
    187   typedef struct _SERVICE_TYPE_INFO {
    188     DWORD dwTypeNameOffset;
    189     DWORD dwValueCount;
    190     SERVICE_TYPE_VALUE Values[1];
    191   } SERVICE_TYPE_INFO,*PSERVICE_TYPE_INFO,*LPSERVICE_TYPE_INFO;
    192 
    193   typedef struct _SERVICE_TYPE_INFO_ABSA {
    194     LPSTR lpTypeName;
    195     DWORD dwValueCount;
    196     SERVICE_TYPE_VALUE_ABSA Values[1];
    197   } SERVICE_TYPE_INFO_ABSA,*PSERVICE_TYPE_INFO_ABSA,*LPSERVICE_TYPE_INFO_ABSA;
    198   typedef struct _SERVICE_TYPE_INFO_ABSW {
    199     LPWSTR lpTypeName;
    200     DWORD dwValueCount;
    201     SERVICE_TYPE_VALUE_ABSW Values[1];
    202   } SERVICE_TYPE_INFO_ABSW,*PSERVICE_TYPE_INFO_ABSW,*LPSERVICE_TYPE_INFO_ABSW;
    203 
    204   __MINGW_TYPEDEF_AW(SERVICE_TYPE_INFO_ABS)
    205   __MINGW_TYPEDEF_AW(PSERVICE_TYPE_INFO_ABS)
    206   __MINGW_TYPEDEF_AW(LPSERVICE_TYPE_INFO_ABS)
    207 
    208   typedef struct _SERVICE_ADDRESS {
    209     DWORD dwAddressType;
    210     DWORD dwAddressFlags;
    211     DWORD dwAddressLength;
    212     DWORD dwPrincipalLength;
    213     BYTE *lpAddress;
    214     BYTE *lpPrincipal;
    215   } SERVICE_ADDRESS,*PSERVICE_ADDRESS,*LPSERVICE_ADDRESS;
    216 
    217   typedef struct _SERVICE_ADDRESSES {
    218     DWORD dwAddressCount;
    219     SERVICE_ADDRESS Addresses[1];
    220   } SERVICE_ADDRESSES,*PSERVICE_ADDRESSES,*LPSERVICE_ADDRESSES;
    221 
    222   typedef struct _SERVICE_INFOA {
    223     LPGUID lpServiceType;
    224     LPSTR lpServiceName;
    225     LPSTR lpComment;
    226     LPSTR lpLocale;
    227     DWORD dwDisplayHint;
    228     DWORD dwVersion;
    229     DWORD dwTime;
    230     LPSTR lpMachineName;
    231     LPSERVICE_ADDRESSES lpServiceAddress;
    232     BLOB ServiceSpecificInfo;
    233   } SERVICE_INFOA,*PSERVICE_INFOA,*LPSERVICE_INFOA;
    234 
    235   typedef struct _SERVICE_INFOW {
    236     LPGUID lpServiceType;
    237     LPWSTR lpServiceName;
    238     LPWSTR lpComment;
    239     LPWSTR lpLocale;
    240     DWORD dwDisplayHint;
    241     DWORD dwVersion;
    242     DWORD dwTime;
    243     LPWSTR lpMachineName;
    244     LPSERVICE_ADDRESSES lpServiceAddress;
    245     BLOB ServiceSpecificInfo;
    246   } SERVICE_INFOW,*PSERVICE_INFOW,*LPSERVICE_INFOW;
    247 
    248   __MINGW_TYPEDEF_AW(SERVICE_INFO)
    249   __MINGW_TYPEDEF_AW(PSERVICE_INFO)
    250   __MINGW_TYPEDEF_AW(LPSERVICE_INFO)
    251 
    252   typedef struct _NS_SERVICE_INFOA {
    253     DWORD dwNameSpace;
    254     SERVICE_INFOA ServiceInfo;
    255   } NS_SERVICE_INFOA,*PNS_SERVICE_INFOA,*LPNS_SERVICE_INFOA;
    256 
    257   typedef struct _NS_SERVICE_INFOW {
    258     DWORD dwNameSpace;
    259     SERVICE_INFOW ServiceInfo;
    260   } NS_SERVICE_INFOW,*PNS_SERVICE_INFOW,*LPNS_SERVICE_INFOW;
    261 
    262   __MINGW_TYPEDEF_AW(NS_SERVICE_INFO)
    263   __MINGW_TYPEDEF_AW(PNS_SERVICE_INFO)
    264   __MINGW_TYPEDEF_AW(LPNS_SERVICE_INFO)
    265 
    266 #ifndef __CSADDR_DEFINED__
    267 #define __CSADDR_DEFINED__
    268 
    269   typedef struct _SOCKET_ADDRESS {
    270     LPSOCKADDR lpSockaddr;
    271     INT iSockaddrLength;
    272   } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
    273 
    274   typedef struct _CSADDR_INFO {
    275     SOCKET_ADDRESS LocalAddr;
    276     SOCKET_ADDRESS RemoteAddr;
    277     INT iSocketType;
    278     INT iProtocol;
    279   } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
    280 #endif
    281 
    282   typedef struct _PROTOCOL_INFOA {
    283     DWORD dwServiceFlags;
    284     INT iAddressFamily;
    285     INT iMaxSockAddr;
    286     INT iMinSockAddr;
    287     INT iSocketType;
    288     INT iProtocol;
    289     DWORD dwMessageSize;
    290     LPSTR lpProtocol;
    291   } PROTOCOL_INFOA,*PPROTOCOL_INFOA,*LPPROTOCOL_INFOA;
    292 
    293   typedef struct _PROTOCOL_INFOW {
    294     DWORD dwServiceFlags;
    295     INT iAddressFamily;
    296     INT iMaxSockAddr;
    297     INT iMinSockAddr;
    298     INT iSocketType;
    299     INT iProtocol;
    300     DWORD dwMessageSize;
    301     LPWSTR lpProtocol;
    302   } PROTOCOL_INFOW,*PPROTOCOL_INFOW,*LPPROTOCOL_INFOW;
    303 
    304   __MINGW_TYPEDEF_AW(PROTOCOL_INFO)
    305   __MINGW_TYPEDEF_AW(PPROTOCOL_INFO)
    306   __MINGW_TYPEDEF_AW(LPPROTOCOL_INFO)
    307 
    308   typedef struct _NETRESOURCE2A {
    309     DWORD dwScope;
    310     DWORD dwType;
    311     DWORD dwUsage;
    312     DWORD dwDisplayType;
    313     LPSTR lpLocalName;
    314     LPSTR lpRemoteName;
    315     LPSTR lpComment;
    316     NS_INFO ns_info;
    317     GUID ServiceType;
    318     DWORD dwProtocols;
    319     LPINT lpiProtocols;
    320   } NETRESOURCE2A,*PNETRESOURCE2A,*LPNETRESOURCE2A;
    321 
    322   typedef struct _NETRESOURCE2W {
    323     DWORD dwScope;
    324     DWORD dwType;
    325     DWORD dwUsage;
    326     DWORD dwDisplayType;
    327     LPWSTR lpLocalName;
    328     LPWSTR lpRemoteName;
    329     LPWSTR lpComment;
    330     NS_INFO ns_info;
    331     GUID ServiceType;
    332     DWORD dwProtocols;
    333     LPINT lpiProtocols;
    334   } NETRESOURCE2W,*PNETRESOURCE2W,*LPNETRESOURCE2W;
    335 
    336   __MINGW_TYPEDEF_AW(NETRESOURCE2)
    337   __MINGW_TYPEDEF_AW(PNETRESOURCE2)
    338   __MINGW_TYPEDEF_AW(LPNETRESOURCE2)
    339 
    340   typedef DWORD (*LPFN_NSPAPI)(VOID);
    341 
    342   typedef VOID (*LPSERVICE_CALLBACK_PROC)(LPARAM lParam,HANDLE hAsyncTaskHandle);
    343   typedef struct _SERVICE_ASYNC_INFO {
    344     LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
    345     LPARAM lParam;
    346     HANDLE hAsyncTaskHandle;
    347   } SERVICE_ASYNC_INFO,*PSERVICE_ASYNC_INFO,*LPSERVICE_ASYNC_INFO;
    348 
    349 #define EnumProtocols __MINGW_NAME_AW(EnumProtocols)
    350 #define GetAddressByName __MINGW_NAME_AW(GetAddressByName)
    351 #define GetTypeByName __MINGW_NAME_AW(GetTypeByName)
    352 #define GetNameByType __MINGW_NAME_AW(GetNameByType)
    353 #define SetService __MINGW_NAME_AW(SetService)
    354 #define GetService __MINGW_NAME_AW(GetService)
    355 
    356   INT WINAPI EnumProtocolsA(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength);
    357   INT WINAPI EnumProtocolsW(LPINT lpiProtocols,LPVOID lpProtocolBuffer,LPDWORD lpdwBufferLength);
    358   INT WINAPI GetAddressByNameA(DWORD dwNameSpace,LPGUID lpServiceType,LPSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength);
    359   INT WINAPI GetAddressByNameW(DWORD dwNameSpace,LPGUID lpServiceType,LPWSTR lpServiceName,LPINT lpiProtocols,DWORD dwResolution,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPVOID lpCsaddrBuffer,LPDWORD lpdwBufferLength,LPWSTR lpAliasBuffer,LPDWORD lpdwAliasBufferLength);
    360   INT WINAPI GetTypeByNameA(LPSTR lpServiceName,LPGUID lpServiceType);
    361   INT WINAPI GetTypeByNameW(LPWSTR lpServiceName,LPGUID lpServiceType);
    362   INT WINAPI GetNameByTypeA(LPGUID lpServiceType,LPSTR lpServiceName,DWORD dwNameLength);
    363   INT WINAPI GetNameByTypeW(LPGUID lpServiceType,LPWSTR lpServiceName,DWORD dwNameLength);
    364   INT WINAPI SetServiceA(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOA lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags);
    365   INT WINAPI SetServiceW(DWORD dwNameSpace,DWORD dwOperation,DWORD dwFlags,LPSERVICE_INFOW lpServiceInfo,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,LPDWORD lpdwStatusFlags);
    366   INT WINAPI GetServiceA(DWORD dwNameSpace,LPGUID lpGuid,LPSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
    367   INT WINAPI GetServiceW(DWORD dwNameSpace,LPGUID lpGuid,LPWSTR lpServiceName,DWORD dwProperties,LPVOID lpBuffer,LPDWORD lpdwBufferSize,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo);
    368 
    369 #ifdef __cplusplus
    370 }
    371 #endif
    372 #endif
    373