NetBIOS名のエラー
WTSOpenQuerySessionInformationを使うとき、
プログラムを動かすPCのNetBIOS名を指定するので
あればNULLでよいとあったので、今日1日やってみたのですが存在しないトークンを参照しました。となります
参照方法が調べてもわからないためわかるかた
アドバイスいただけるとありがたいです
#include<stdio.h>
#include<windows.h>
#include<wtsapi32.h>
#include<process.h>
int main(){
/*ハンドルをオープン*/
char name;
char *p;
HANDLE handle;
BOOL wts;
DWORD error;
LPVOID lpMsgBuf;
LPTSTR ppBuffer;
DWORD pBytesReturned;
name=NULL; /*NULLを指定するとプログラムを動かしているPCを指定できる*/
p=name;
printf("%p[name]\n",&name);
printf("name=%p\n",name);
handle =WTSOpenServer((LPTSTR)&p); /*サーバーハンドルを取得します*/
printf("handle=%p\n",handle);
error=GetLastError();
printf("errorコード=%d\n",error);
/*ハンドルOPENのエラーメッセージを取得してメッセージBOXに表示してます*/
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
AKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,0,NULL);
MessageBox(NULL,(LPCTSTR)lpMsgBuf,"Error",MB_OK | MB_ICONINFORMATION);
/*バッファの開放*/
LocalFree(lpMsgBuf);
/*セッション情報の取得*/
wts = WTSQuerySessionInformation(
(HANDLE)&p,
WTS_CURRENT_SESSION,
WTSConnectState,
&ppBuffer,
&pBytesReturned
);
printf("%p[ppBuffer]\n%p[pBytesReturned]\n",&ppBuffer,&pBytesReturned);
return 0;
}
お礼
ありがとうごまいます、なにか使い方を勘違いしていたようです、ありがとうございました。