⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drmtypes.h

📁 本程序为ST公司开发的源代码
💻 H
字号:
/**@@@+++@@@@********************************************************************** Microsoft Windows Media** Copyright (C) Microsoft Corporation. All rights reserved.*****@@@---@@@@*******************************************************************/#ifndef __DRMTYPES_H__#define __DRMTYPES_H__#ifdef __cplusplusextern "C" {#endif#include "wmadefs.h" /* WMDRM_NETWORK [FHA] */#define __GNUC__     /* WMDRM_NETWORK [FHA] */             #define   ARM        /* WMDRM_NETWORK [FHA] */#define OEM_malloc MALLOC /* WMDRM_NETWORK [FHA] */#define OEM_free FREE     /* WMDRM_NETWORK [FHA] */#define SAFE_OEM_FREE(p) \    if (p != NULL) \    { \        OEM_free((DRM_VOID *) p); \        p = NULL; \    }#define OEM_SecureZeroMemory(pb,cb) ZEROMEM(pb,cb)/* Would be good to have a test for platform.  If the platform isn't Windows	we should define __cdecl to be nothing.  We can't just use _MSC_VER though	as there are other compilers for the Windows platforms. */#if defined (_MSC_VER)#ifdef __STDC__ /* when compiling as ANSI, parameter-passing specifications aren't allowed */#define DRM_API #else#define DRM_API __cdecl    #endif#elif defined (__GNUC__)#define DRM_API #elif defined (__TMS320C55X__)#define SIXTEEN_BIT_ADDRESSING 1#define DRM_NO_NATIVE_64_TYPES 1#define DRM_API #else#error Unknown compiler -- fix up drmcommon.h to understand this compiler.#define DRM_API    #endif  /* * In General, * DRM_CHAR* is used for null terminated ANSI strings* DRM_BYTE* is used for just plain byte buffer, w/o any termination*/#if defined(_M_IX86)#define TARGET_LITTLE_ENDIAN 1#elif defined( _M_AMD64 )#define TARGET_LITTLE_ENDIAN 1#elif defined( _M_IA64 )#define TARGET_LITTLE_ENDIAN 1#elif defined( ARM )#define TARGET_LITTLE_ENDIAN 1#elif defined(__TMS320C55X__)#define DRM_USE_PORTABLE_WIDE_STRINGS 1#define TARGET_LITTLE_ENDIAN 0#define SIXTEEN_BIT_ADDRESSING 1#else#define TARGET_LITTLE_ENDIAN 0#endif/* _M_IA64 _M_AMD64 */                                                                        /* 8-bit addressing    16 bit addressing*/typedef void                    DRM_VOID;typedef unsigned char           DRM_BYTE;                               /* 1 byte              1 byte */typedef char                    DRM_CHAR;                               /* 1 byte              1 byte */typedef unsigned short          DRM_WORD, DRM_WCHAR;                    /* 2 bytes             1 byte */typedef short                   DRM_SHORT;                              /* 2 bytes             1 byte */#if SIXTEEN_BIT_ADDRESSINGtypedef unsigned int            DRM_BOOL;                               /* 1 bytes             1 bytes */typedef unsigned long           DRM_UINT;                               /* 4 bytes             2 bytes */typedef long                    DRM_INT;                                /* 4 bytes             2 bytes */typedef long                    DRM_LONG;                               /* 4 bytes             2 bytes */typedef unsigned long           DRM_RESULT;                             /* 4 bytes             2 bytes */#elsetypedef unsigned int            DRM_UINT,DRM_BOOL;                      /* 4 bytes             2 bytes */typedef int                     DRM_INT;                                /* 4 bytes             2 bytes */typedef long                    DRM_LONG, DRM_RESULT;                   /* 4 bytes             2 bytes */#endiftypedef unsigned long           DRM_DWORD, DRM_ULONG;                   /* 2 bytes             1 bytes */typedef unsigned short          DRM_LANGID;#include <drmint64.h>#if SIXTEEN_BIT_ADDRESSING#define CB_NATIVE_BYTE 2#define __CB_DECL(x) ((x)/CB_NATIVE_BYTE+(((x)%CB_NATIVE_BYTE)?1:0))#else#define CB_NATIVE_BYTE 1#define __CB_DECL(x) (x)#endif#ifndef SIZEOF#define SIZEOF(x) (sizeof(x)*CB_NATIVE_BYTE)#endif#ifndef BITS_PER_BYTE#define BITS_PER_BYTE (CB_NATIVE_BYTE*8)#endif//#include <drmbytemanip.h>#if !defined( _W64 )#if  ( defined(_X86_) || defined(_M_IX86) ) && _MSC_VER >= 1300#define _W64 __w64#else#define _W64#endif#endif#if defined( _WIN64)typedef DRM_INT64 DRM_INT_PTR;typedef DRM_UINT64 DRM_UINT_PTR;typedef DRM_UINT64 DRM_DWORD_PTR;#elsetypedef _W64 DRM_INT DRM_INT_PTR;typedef _W64 DRM_UINT DRM_UINT_PTR;typedef _W64 DRM_DWORD DRM_DWORD_PTR;#endif#define BYTE2LITTLEENDIAN(dword, byte)     DRM_BYT_CopyBytes((DRM_BYTE*)&(dword),0,(byte),0,SIZEOF(DRM_DWORD));#define DWORD2LITTLEENDIAN( byte, dword )  DRM_BYT_CopyBytes((byte),0,(DRM_BYTE*)&(dword),0,SIZEOF(DRM_DWORD));#define BYTE2BIGENDIAN(dword, byte)        {DRM_BYT_CopyBytes((DRM_BYTE*)&(dword),0,(byte),0,SIZEOF(DRM_DWORD));FIX_ENDIAN_DWORD((dword));}#define DWORD2BIGENDIAN(byte, dword)       {FIX_ENDIAN_DWORD((dword));DRM_BYT_CopyBytes((byte),0,(DRM_BYTE*)&(dword),0,SIZEOF(DRM_DWORD));FIX_ENDIAN_DWORD((dword));}#if TARGET_LITTLE_ENDIAN#define BYTES_TO_DWORD BYTE2LITTLEENDIAN#define DWORD_TO_BYTES DWORD2LITTLEENDIAN#define FIX_ENDIAN_WORD(w)#define FIX_ENDIAN_DWORD(dw)#define FIX_ENDIAN_QWORD(qw)#else#define BYTES_TO_DWORD BYTE2BIGENDIAN#define DWORD_TO_BYTES DWORD2BIGENDIAN#if __TMS320C55X__/* Work around a bug in the TI compiler */#define FIX_ENDIAN_WORD(w)   {DRM_DWORD __dw = SIZEOF(DRM_WORD);DRM_BYT_ReverseBytes((DRM_BYTE*)&(w), __dw);}#define FIX_ENDIAN_DWORD(dw) {DRM_DWORD __dw = SIZEOF(DRM_DWORD);DRM_BYT_ReverseBytes((DRM_BYTE*)&(dw),__dw);}#define FIX_ENDIAN_QWORD(qw) {DRM_DWORD __dw = SIZEOF(DRM_UINT64);DRM_BYT_ReverseBytes((DRM_BYTE*)&(qw),__dw);NATIVE64_TO_NONNATIVE64((qw));}#else#define FIX_ENDIAN_WORD(w)   DRM_BYT_ReverseBytes((DRM_BYTE*)&(w), SIZEOF(DRM_WORD))#define FIX_ENDIAN_DWORD(dw) DRM_BYT_ReverseBytes((DRM_BYTE*)&(dw),SIZEOF(DRM_DWORD))#define FIX_ENDIAN_QWORD(qw) {DRM_BYT_ReverseBytes((DRM_BYTE*)&(qw),SIZEOF(DRM_UINT64));NATIVE64_TO_NONNATIVE64((qw));}#endif#endiftypedef struct __tagDRM_GUID {    DRM_DWORD Data1;    DRM_WORD  Data2;    DRM_WORD  Data3;    DRM_BYTE  Data4 [__CB_DECL(8)];} DRM_GUID;#define ALL_N_BITS_ON(n) (~((~0)<<(n)))/*** This macro will calculate the maximum value of an unsigned data type ** where the type is passed in as x.** For example MAX_UNSIGNED_TYPE( DRM_BYTE  ) will evaluate to 0xFF**             MAX_UNSIGNED_TYPE( DRM_DWORD ) will evaluate to 0xFFFFFFFF*/#define MAX_UNSIGNED_TYPE(x) (ALL_N_BITS_ON(SIZEOF(x)*BITS_PER_BYTE))/****/typedef struct tagDRM_CONST_STRING{    const DRM_WCHAR *pwszString;    DRM_DWORD        cchString;} DRM_CONST_STRING;/****/typedef struct tagDRM_STRING{    DRM_WCHAR *pwszString;    DRM_DWORD  cchString;} DRM_STRING;typedef struct tagDRM_ANSI_CONST_STRING{    const DRM_CHAR *pszString;    DRM_DWORD       cchString;} DRM_ANSI_CONST_STRING;typedef struct tagDRM_ANSI_STRING{    DRM_CHAR  *pszString;    DRM_DWORD  cchString;} DRM_ANSI_STRING;typedef struct __tagSubString{    DRM_DWORD m_ich;    DRM_DWORD m_cch;} DRM_SUBSTRING;#define ASSIGN_DRM_ANSI_STRING(x,y) \{ \    (x).pszString = (y); \    (x).cchString = NO_OF(y)-1; \}#define ASSIGN_DRM_STRING(x,y) \{ \    (x).pwszString = (y).pwszString; \    (x).cchString  = (y).cchString; \}#define INIT_DRM_STRING(x) \{ \    (x).pwszString = NULL; \    (x).cchString  = 0; \}#define INIT_DRM_ANSI_STRING(x) \{ \    (x).pszString = NULL; \    (x).cchString = 0; \}#if TARGET_LITTLE_ENDIAN || SIXTEEN_BIT_ADDRESSING/* Little endian machines will use L"".  Packed strings will use TWO_BYTES( ) which will be a short and the right size */#define CREATE_DRM_STRING(x) { (x), (NO_OF(x)) - 1 }#else/* Big Endian processors that are 8-bit referencable will have strings like "S\0t\0r\0i\0n\0g\0" */#define CREATE_DRM_STRING(x) { (DRM_WCHAR*) x, (NO_OF(x)-1)/SIZEOF(DRM_WCHAR)}#endif#if TARGET_LITTLE_ENDIAN#define WCHAR_CAST(x)   ((DRM_WCHAR)(x))#define NATIVE_WCHAR(x) (x)#else#define WCHAR_CAST(x)   ((DRM_WCHAR)(x)<<8)#define NATIVE_WCHAR(x) ((x)>>8)#endif#define CREATE_DRM_ANSI_STRING(x) {(x),((NO_OF(x))-1)*CB_NATIVE_BYTE}#define EMPTY_DRM_STRING  { NULL, 0 }#define DSTR_FROM_PB(pdstr,pb,cb) \    (pdstr)->cchString=(cb)/SIZEOF(DRM_WCHAR); \    (pdstr)->pwszString=(DRM_WCHAR*)(pb); #define DASTR_FROM_PB(pdastr,pb,cb) \    (pdastr)->cchString=(cb)/SIZEOF(DRM_CHAR); \    (pdastr)->pszString=(DRM_CHAR*)(pb); /* for frequent uses of DRM_CONST_STRINGs' char counts and  wide-char buffers as byte counts and byte buffers */#define PB_DSTR(pdstr) (DRM_BYTE*)((pdstr)->pwszString)#define CB_DSTR(pdstr) ((pdstr)->cchString*SIZEOF(DRM_WCHAR))#define PB_DASTR(pdstr) (DRM_BYTE*)((pdstr)->pszString)#define CB_DASTR(pdstr) ((pdstr)->cchString)typedef struct _tagDRMSYSTEMTIME{    DRM_WORD wYear;    DRM_WORD wMonth;    DRM_WORD wDayOfWeek;    DRM_WORD wDay;    DRM_WORD wHour;    DRM_WORD wMinute;    DRM_WORD wSecond;    DRM_WORD wMilliseconds;} 	DRMSYSTEMTIME;#if TARGET_LITTLE_ENDIANtypedef struct _tagDRMFILETIME{    DRM_DWORD dwLowDateTime;    DRM_DWORD dwHighDateTime;} DRMFILETIME;#elsetypedef struct _tagDRMFILETIME{    DRM_DWORD dwHighDateTime;    DRM_DWORD dwLowDateTime;} DRMFILETIME;#endif/* generic ID type, currently all the same size */#define DRM_ID_SIZE  16typedef struct _tagDRM_ID {    DRM_BYTE rgb [__CB_DECL(DRM_ID_SIZE)];} DRM_ID;typedef DRM_ID DRM_MID;typedef DRM_ID DRM_KID;typedef DRM_ID DRM_LID;typedef DRM_ID DRM_TID;#ifdef __cplusplus}#endif#endif  /* __DRMTYPES_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -