定义函数GetName(LPSTR buffer, long nBufferLength)时,什么情况下省略nBufferLength参数也能保证strlen(buffer)能正常工作?
HRESULT GetName(LPSTR buffer, long nBufferLength)这个函数是在DLL里定义的,有可能被不同的模块不同的进程调用,那么在什么情况下,函数没有了nBufferLength这个参数而调用strlen(buffer)也能返回buffer的正确长度,从而不导致超界操作?
假如我要向另一个进程调用这个函数时,buffer参数可能要经历整形几次,例如(LPARAM)buffer,(LPVOID)buffer,等到目标进程调用strlen((LPSTR)buffer)有时返回值是4(效果跟调用sizeof(LPSTR)一样),不管buffer实际有多少字符都一样,真奇怪。
另外,SetName(LPSTR buffer)在任何情况下都不需要调用者传入buffer的长度,对不对?