使用NDdeShareAdd创建DDE共享

【勇芳软件工作室】汉化HomePreviousNext

DDE服务器应用程序使用NDdeShareAdd功能创建DDE共享。

在创建DDE共享之前,最好使用NDdeIsValidShareNameNDdeIsValidAppTopicList功能来验证建议的共享名称和主题名称是否有效。这些功能也被NDdeShareAdd调用。

以下示例演示如何创建DDE共享。它使用NULL自由访问控制列表(DACL)来向所有用户授予写访问权限。请注意,这与在NDdeShareAdd【pSD】参数中指定NULL不同。

BOOL MyCreateDdeShare( LPTSTR lpszShareName, LPTSTR lpszTopicList )

{

NDDESHAREINFO ndsi;

PSECURITY_DESCRIPTOR pSD = NULL;

//其中lpszShareName是共享名。

if( NDdeIsValidShareName( lpszShareName ) == FALSE )

return FALSE;

//其中lpszTopicList是一个以null结尾的字符串结束的列表

//另一个空字符

if( NDdeIsValidAppTopicList( lpszTopicList ) == FALSE )

return FALSE;

//填写NDDESHAREINFO结构。

ndsi.lRevision = 1;

ndsi.lpszShareName = lpszShareName;

ndsi.lShareType = SHARE_TYPE_STATIC;

ndsi.lpszAppTopicList = lpszTopicList;

ndsi.fSharedFlag = TRUE;

ndsi.fService = FALSE;

ndsi.fStartAppFlag = TRUE;

ndsi.nCmdShow = SW_SHOWNORMAL;

ndsi.cNumItems = 0;

ndsi.lpszItemList = "";

//创建安全描述符以允许写访问。

pSD = (PSECURITY_DESCRIPTOR) LocalAlloc(

LPTR,

SECURITY_DESCRIPTOR_MIN_LENGTH );

InitializeSecurityDescriptor( pSD, SECURITY_DESCRIPTOR_REVISION );

SetSecurityDescriptorDacl( pSD, TRUE, (PACL)NULL, FALSE );

//删除可能的旧DDE共享。

NDdeShareDel(

NULL,

lpszShareName,

0

);

//创建DDE共享。

NDdeShareAdd(

NULL,

2,

pSD,

(LPBYTE)&ndsi,

sizeof(NDDESHAREINFO)

);

LocalFree( pSD );

return TRUE;

}

以下示例显示如何调用MyCreateDdeShare函数创建共享MyDdeShare $:

char *TopicList = "\0\0MyApp|MyTopic\0\0";

MyCreateDdeShare( "MyDdeShare$", TopicList );

此共享名称以美元符号($)结尾,表示它是静态DDE共享。主题字符串仅为静态类型的DDE共享提供。