小编Ate*_*ral的帖子

DllMain内部没有断开的开关/外壳

我有一个Dllmain,当一个线程附加到这个DLL时,它分配Thread本地存储.代码如下:

BOOL APIENTRY DllMain(HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved)
{
    LPVOID lpvData; 
    BOOL fIgnore; 

    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        onProcessAttachDLL();
        // Allocate a TLS index.
        if ((dwTlsIndex = TlsAlloc()) == TLS_OUT_OF_INDEXES) 
            return FALSE; 
        // how can it jump to next case???
    case DLL_THREAD_ATTACH:
        // Initialize the TLS index for this thread.
        lpvData = (LPVOID) LocalAlloc(LPTR, MAX_BUFFER_SIZE); 
        if (lpvData != NULL) 
            fIgnore = TlsSetValue(dwTlsIndex, lpvData);  
        break; 
    ...
Run Code Online (Sandbox Code Playgroud)

}

我知道对于主线程,根据Microsoft文档,未输入DLL_THREAD_ATTACH.但是,上面的代码有效.我使用的是VC2005.当我进入调试器时,我看到在ul_reason_for_call = 1后输入DLL_THREAD_ATTACH的情况!怎么会发生这种情况?如果我在DLL_PROCESS_ATTACH块的末尾添加"break",则DLL无法工作.

怎么会发生这种情况?

c dll winapi switch-statement

0
推荐指数
1
解决办法
4443
查看次数

比较属性时的结果很奇怪

你能解释一下以下内容吗?尝试比较对象属性:vrowData对象的newName .回来价值观report3report2,但是在比较(rowData.newName === v.newName)这些值相等?? !! 请参阅下面的控制台消息

值是字符串,属于不同的对象.

console.log('== NEW NAME OF THE VALE OF TABLE ==');
console.log(v.nameNew); // which is report3
console.log('== NEW NAME OF THE DATA OF THE ROW ==');
console.log(rowData.nameNew); // which is report2
console.log('== IDIOT PROOF TEST ');
console.log(rowData.newName === v.newName);

控制台日志:

== NEW NAME OF THE VALE OF TABLE ==
Report3
== NEW NAME OF THE DATA OF THE ROW ==
Report2
== IDIOT PROOF TEST …

javascript equals

0
推荐指数
1
解决办法
58
查看次数

重新分配变量和重新定义之间的性能差异

在Javascript中哪种风格更适合性能?

STYLE1

var x = ''
for(var i = 0 ; i < arr.length ; i ++){
    x = ....
    //do something with x
 }
Run Code Online (Sandbox Code Playgroud)

蓝紫魅力

for(var i = 0 ; i < arr.length ; i ++){
    var x = ....
    //do something with x
 }
Run Code Online (Sandbox Code Playgroud)

javascript variables

-1
推荐指数
1
解决办法
87
查看次数

链接同一对象中的两个字符串

   var object={
      firstString: 'You must register in order...',
      secondString:'You must re-enter your password in order to...',
      thirdString:'You must re-enter your password in order to...'
    };
Run Code Online (Sandbox Code Playgroud)

如您所见,第二和第三个字符串是相同的.因为这在我现在使用的对象中多次发生,我想将第三个对象与第二个对象链接以节省一些字节

我尝试了以下但是它们不起作用

var object={
  firstString:'You must register in order...',
  secondString:'You must re-enter your password in order to...',
  thirdString:this.secondString
};

var object={
      firstString:'You must register in order...',
      secondString:'You must re-enter your password in order to...',
      thirdString:object.secondString
};
Run Code Online (Sandbox Code Playgroud)

谢谢

javascript json object

-1
推荐指数
1
解决办法
62
查看次数

如何在javascript中隐藏div?

<script type="text/javascript">
function HideDiv(id) {
    document.getElementById(id).Style.display = "block";
}
</script>
Run Code Online (Sandbox Code Playgroud)

javascript css

-3
推荐指数
1
解决办法
177
查看次数

标签 统计

javascript ×4

c ×1

css ×1

dll ×1

equals ×1

json ×1

object ×1

switch-statement ×1

variables ×1

winapi ×1