ホーム » Windows » ::NetServerGetInfo の使い方

::NetServerGetInfo の使い方

::NetServerGetInfo を見つけた.
そこにあるサンプルをそのまま VC 6 でビルドして,動作を確認できた.


VC 6 では UNICODE exe をビルドできるが,デバッグで変数がうまく認識されないのでやり辛い.
そのため,デバックビルドは _MBCS とすることがほとんど.
それで,サンプルを変更しようとしたが,文字列関係が普通の API と異なる( ::~A と ::~W )?
1 つ目の引数の pszServerName は LPTSTR を与えている.
それで MSDN 2001/10 などを見ると,Win9x と WinNT で異なるみたい.
NetServerGetInfo     WinNT , Win9x


それで,いろいろとやって…
ドキュメントの通りで,Win9x は char* ,WinNT は LPWSTR ということみたい.
VC 6 では,次の様に LPTSTR(server…) とすることで良さそう.
::NetServerGetInfo(LPTSTR(server.c_str()),102,&buff)
VC 2022 などではこれから. LMSTR になっている.
NetServerGetInfo     VC 6 , Win10 SDK
~\Windows Kits\10\include\…\lmcons.h より

#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( __midl ) || defined( FORCE_UNICODE )
#define LMSTR   LPWSTR
#define LMCSTR  LPCWSTR
#else
#define LMSTR   LPSTR
#define LMCSTR  LPCSTR
#endif

VC 8 以降でビルド可能にするため LPWSTR を LMSTR に.
また VC 6 でもビルドできる様に次を追加.

#ifndef	LMSTR
	#define	LMSTR	LPTSTR
//	#define	LMCSTR	LPCWSTR
#endif

エラーコード.

ERROR_ACCESS_DENIED     	   5 (0x  5)	アクセスが拒否されました。
ERROR_BAD_NETPATH       	  53 (0x 35)	ネットワーク パスが見つかりませんでした。
ERROR_INVALID_PARAMETER 	  87 (0x 57)	パラメーターが正しくありません。
RPC_S_INVALID_BINDING   	1702 (0x6A6)	バインド ハンドルが無効です。
RPC_S_INVALID_NET_ADDR  	1707 (0x6AB)	ネットワーク アドレスが無効です。


DNS ホスト名から NetBIOS コンピュータ名をプログラム的に取得する (Windows/C++/Win32API)
NetServerGetInfo で ローカルコンピュータ名を取得する
リモートコンピュータのOS情報の取得

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

1件のコメント

コメントは停止中です。