📄 ssdp.h
字号:
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft shared
// source or premium shared source license agreement under which you licensed
// this source code. If you did not accept the terms of the license agreement,
// you are not authorized to use this source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the SOURCE.RTF on your install media or the root of your tools installation.
// THE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#ifndef __ssdp_h__
#define __ssdp_h__
//#include <windef.h>
//#include <types.h>
//#include <winbase.h>
#include <windows.h>
#ifndef __RPC_FAR
#define __RPC_FAR
#define __RPC_USER
#endif
/* Forward Declarations */
#ifdef __cplusplus
extern "C"{
#endif
void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * );
//#define SSDP_SERVICE_PERSISTENT 0x00000001
#define NUM_OF_METHODS 4
typedef
enum _NOTIFY_TYPE
{
NOTIFY_ALIVE = 1,
NOTIFY_BYEBYE = 2,
NOTIFY_PROP_CHANGE = 4,
}NOTIFY_TYPE;
#define MAX_MSG_SIZE 1024
struct event_msg_hdr
{
int nNumberOfBlocks;
HANDLE hSubscription;
NOTIFY_TYPE nt;
union
{
DWORD dwEventSEQ;
DWORD dwLifeTime;
};
};
typedef
enum _SSDP_METHOD
{ SSDP_NOTIFY = 0,
SSDP_M_SEARCH = 1,
GENA_SUBSCRIBE = 2,
GENA_UNSUBSCRIBE = 3,
SSDP_INVALID = 4
} SSDP_METHOD;
typedef enum _SSDP_METHOD __RPC_FAR *PSSDP_METHOD;
typedef
enum _SSDP_HEADER
{ SSDP_HOST = 0,
SSDP_NT = 1,
SSDP_NTS = 2,
SSDP_ST = 3,
SSDP_MAN = 4,
SSDP_MX = 5,
SSDP_LOCATION = 6,
SSDP_AL = 7,
SSDP_USN = 8,
SSDP_CACHECONTROL = 9,
GENA_CALLBACK = 10,
GENA_TIMEOUT = 11,
GENA_SCOPE = 12,
GENA_SID = 13,
GENA_SEQ = 14,
CONTENT_LENGTH = 15,
CONTENT_TYPE = 16,
SSDP_SERVER = 17,
SSDP_EXT = 18,
SSDP_OPT = 19,
SSDP_NLS = 20,
SSDP_LAST // end marker
}SSDP_HEADER;
#define NUM_OF_HEADERS SSDP_LAST
typedef enum _SSDP_HEADER __RPC_FAR *PSSDP_HEADER;
typedef struct _SSDP_REQUEST
{
SSDP_METHOD Method;
LPSTR RequestUri;
LPSTR Headers[ SSDP_LAST ];
LPSTR ContentType;
DWORD ContentLength;
LPSTR Content;
DWORD status;
} SSDP_REQUEST;
typedef struct _SSDP_REQUEST __RPC_FAR *PSSDP_REQUEST;
//
// SSDP_MESSAGE compatible with XP
//
typedef struct _SSDP_MESSAGE_XP
{
/* [string] */ LPSTR szType;
/* [string] */ LPSTR szLocHeader;
/* [string] */ LPSTR szAltHeaders;
/* [string] */ LPSTR szUSN;
/* [string] */ LPSTR szSid;
DWORD iSeq;
UINT iLifeTime;
/* [string] */ LPSTR szContent;
GUID guidInterface;
}SSDP_MESSAGE_XP;
typedef struct _SSDP_MESSAGE : public SSDP_MESSAGE_XP
{
/* [string] */ LPSTR szNls;
} SSDP_MESSAGE;
typedef struct _SSDP_MESSAGE __RPC_FAR *PSSDP_MESSAGE;
typedef struct _SSDP_REGISTER_INFO
{
/* [string] */ LPSTR szSid;
DWORD csecTimeout;
} SSDP_REGISTER_INFO;
typedef struct _MessageList
{
long size;
/* [size_is] */ SSDP_REQUEST __RPC_FAR *list;
} MessageList;
typedef
enum _UPNP_PROPERTY_FLAG
{ UPF_NON_EVENTED = 0x1
} UPNP_PROPERTY_FLAG;
typedef struct _UPNP_PROPERTY
{
/* [string] */ LPWSTR szName;
DWORD dwFlags;
/* [string] */ LPWSTR szValue;
} UPNP_PROPERTY;
typedef struct _SUBSCRIBER_INFO
{
/* [string] */ LPSTR szDestUrl;
DWORD csecTimeout;
DWORD iSeq;
/* [string] */ LPSTR szSid;
} SUBSCRIBER_INFO;
typedef struct _EVTSRC_INFO
{
DWORD cSubs;
/* [size_is] */ SUBSCRIBER_INFO __RPC_FAR *rgSubs;
} EVTSRC_INFO;
typedef /* [context_handle] */ void __RPC_FAR *PCONTEXT_HANDLE_TYPE;
typedef /* [context_handle] */ void __RPC_FAR *PSYNC_HANDLE_TYPE;
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -