Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#undef NDEBUG
#include <assert.h>
#include <windows.h>
#include <winsock.h>
#include <winioctl.h>
#define SETUP_SERVER 1
#define CLOSE_SERVER 2
#define IOCTL_ISCSI_BASE FILE_DEVICE_NETWORK
#define IOCTL_ISCSI_SETUP_SERVER CTL_CODE(IOCTL_ISCSI_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_ISCSI_CLOSE_SERVER CTL_CODE(IOCTL_ISCSI_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
int __cdecl main(int argc, char *argv[]) { HANDLE hDevice; ULONG controlCode = 0; USHORT choice; DWORD nBytes = 0; BOOLEAN retVal;
printf("\nThis program will setup or close iSCSI server node\n"); printf("\n Select the operation to perform : \n\n"); printf(" 1. Setup server node\n"); printf(" 2. Close server node\n\n"); printf(" Enter choice (1 or 2) : "); scanf("%d", &choice);
switch (choice) { case SETUP_SERVER: { printf("\n Will setup iSCSI server\n\n"); controlCode = IOCTL_ISCSI_SETUP_SERVER; break; }
case CLOSE_SERVER: { printf("\n Will close iSCSI server\n\n"); controlCode = IOCTL_ISCSI_CLOSE_SERVER; break; }
default: { printf("\n Invalid entry %d. Enter 1 or 2\n", choice); return 0; } } // switch (choice)
hDevice = CreateFile("\\\\.\\iScsiServer", (GENERIC_READ | GENERIC_WRITE), (FILE_SHARE_READ | FILE_SHARE_WRITE), 0, OPEN_EXISTING, 0, NULL ); if (hDevice != INVALID_HANDLE_VALUE) { if (!DeviceIoControl(hDevice, controlCode, NULL, 0, NULL, 0, &nBytes, NULL )) { printf(" IOCTL failed. Error %d\n", GetLastError()); } else { printf(" IOCTL succeeded\n"); }
CloseHandle(hDevice); } else { printf(" Invalid Handle on opening iScsi server. Error : %d\n", GetLastError()); } return 0; }
|